스프링 부트 CKEditor
스프링 부트 CKEditor 10 - 글저장 테이블 생성 (Entity, Repository)
https://youtu.be/81zU_wvBRpc?si=v1T5mV71OLBEKpzF
스프링 부트 CKEditor 10 - 글저장 테이블 생성 (Entity, Repository)
- 스프링 부트 CKEditor 10 - 글저장 테이블 생성 (Entity, Repository)
Spring Boot + CKEditor 5 : Entity, Repository로 DB 테이블 자동 생성하기
이번 글에서는 CKEditor로 작성한 데이터를 실제 DB에 저장하기 위한 핵심 단계, 👉 Entity + Repository 기반 테이블 생성을 다룬다.
이 단계부터는 단순 CRUD가 아니라 👉 Spring Boot + JPA 구조를 제대로 이해하는 구간이다.
핵심은 한 줄이다.
“Entity를 만들면 테이블은 자동으로 생성된다”
1. 전체 구조 흐름 다시 정리
이제 전체 흐름이 완성된다.
CKEditor → Form → DTO → Controller → Service → Entity → DB
👉 이번 글은 Entity ~ DB 연결 부분이다.
2. 테이블 구조 설계
게시글 저장을 위해 최소한 필요한 컬럼은 3개다.
기본 컬럼
| 컬럼 | 설명 |
|---|---|
| id | PK (자동 증가) |
| title | 제목 |
| content | 내용 |
👉 중요한 포인트
- content는 HTML 데이터
- 일반 텍스트보다 훨씬 길다
3. JPA로 테이블 자동 생성
Spring Boot는 SQL 없이 테이블을 생성할 수 있다.
application.properties 설정
spring.jpa.hibernate.ddl-auto=update
ddl-auto 옵션 의미
| 옵션 | 설명 |
|---|---|
| none | 아무것도 안 함 |
| create | 실행 시 테이블 새로 생성 (기존 삭제) |
| update | 변경된 부분만 반영 |
| validate | 구조 검증만 |
👉 개발 환경 추천:
update 또는 create
👉 운영 환경:
none 또는 validate
4. Entity 클래스 작성
이제 실제 테이블과 매핑되는 클래스를 만든다.
Entity 클래스
import jakarta.persistence.*;
import lombok.Data;
@Entity
@Data
public class ContentEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@Column(columnDefinition = "LONGTEXT")
private String content;
}
5. 핵심 어노테이션 설명
@Entity
👉 이 클래스 = DB 테이블
@Id
👉 PK 지정
@GeneratedValue
GenerationType.IDENTITY
👉 DB에서 자동 증가
@Column(columnDefinition = “LONGTEXT”)
👉 이게 핵심이다.
6. 왜 LONGTEXT가 중요한가?
기본 String 매핑:
VARCHAR(255)
👉 문제:
- 255자 제한
- CKEditor 데이터 저장 불가
CKEditor 데이터 예:
<p>내용</p>
<strong>굵은 글씨</strong>
<img src="...">
👉 HTML 구조 포함 → 길이 매우 김
해결
@Column(columnDefinition = "LONGTEXT")
👉 MySQL 기준:
- 최대 수억 byte 저장 가능
📌 실제 문서에서도 content 컬럼은 LONGTEXT로 변경해야 한다고 강조됨
7. Repository 인터페이스 작성
이제 DB 접근 계층을 만든다.
Repository 코드
import org.springframework.data.jpa.repository.JpaRepository;
public interface ContentRepository extends JpaRepository<ContentEntity, Long> {
}
핵심 포인트
JpaRepository<ContentEntity, Long>
- 첫 번째: Entity 클래스
- 두 번째: PK 타입
👉 이 한 줄로 가능한 것:
- insert
- select
- update
- delete
👉 SQL 없이 CRUD 가능
8. 테이블 생성 확인
이제 서버 실행한다.
실행 전
- DB에 테이블 없음
실행 후
👉 자동 생성:
content_entity 테이블 생성
👉 확인 방법
- MySQL Workbench
- DBeaver
- AWS RDS 콘솔
9. 자주 하는 실수
1) ddl-auto 설정 안 함
👉 테이블 생성 안 됨
2) content 타입 미설정
👉 데이터 잘림 발생
3) Entity 어노테이션 누락
@Entity ❌ 빠짐
👉 테이블 생성 안 됨
4) 패키지 스캔 문제
👉 Spring Boot main class 기준 하위 패키지여야 함
10. 지금 단계에서 중요한 것
이 단계는 단순 DB 연결이 아니다.
핵심 개념
1. Entity = 테이블 정의
👉 DB 구조를 코드로 관리
2. Repository = DB 접근 도구
👉 SQL 없이 CRUD
3. JPA = ORM
👉 객체 ↔ 테이블 매핑
11. 다음 단계
이제 진짜 “저장 로직”으로 간다.
다음 작업
- Service 계층 생성
- DTO → Entity 변환
- Repository.save() 호출
- DB 저장 완료
정리
이번 글의 핵심은 한 줄이다.
Spring Boot에서는 테이블을 SQL이 아니라 “Entity로 정의한다”
핵심 요약
- Entity 만들면 테이블 자동 생성
- ddl-auto 설정 필수
- content는 LONGTEXT로 설정
- Repository로 DB 접근
다음 글 흐름
- Service 계층 구현
- DB 저장 로직 완성
- 게시글 조회 기능