스프링 부트 CKEditor

스프링 부트 CKEditor 10 - 글저장 테이블 생성 (Entity, Repository)

https://youtu.be/81zU_wvBRpc?si=v1T5mV71OLBEKpzF

스프링 부트 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개다.


기본 컬럼

컬럼설명
idPK (자동 증가)
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. 다음 단계

이제 진짜 “저장 로직”으로 간다.


다음 작업

  1. Service 계층 생성
  2. DTO → Entity 변환
  3. Repository.save() 호출
  4. DB 저장 완료

정리

이번 글의 핵심은 한 줄이다.

Spring Boot에서는 테이블을 SQL이 아니라 “Entity로 정의한다”


핵심 요약

  • Entity 만들면 테이블 자동 생성
  • ddl-auto 설정 필수
  • content는 LONGTEXT로 설정
  • Repository로 DB 접근

다음 글 흐름

  • Service 계층 구현
  • DB 저장 로직 완성
  • 게시글 조회 기능


© 2020. All rights reserved.

SIKSIK