본문 바로가기

Development/Spring

[Spring JPA] DDL, DDL 옵션

DDL

  • Spring JPA에서 DDL(Data Definition Language)은 데이터베이스 스키마를 생성하거나 변경하는 SQL 명령을 의미
  • DDL에는 보통 'CREATE', 'ALTER', 'DROP' 등의 명령어가 포함됨
  • Spring Boot에서 JPA를 사용할 때, 'spring.jpa.hibernate.ddl-auto' 라는 설정 속성을 통해 Hibernate가 어떻게 DDL 명령을 실행할지를 정의할 수 있음

ddl-auto 옵션 종류

  • create: 기존테이블 삭제 후 다시 생성 (DROP 후에 CREATE)
  • create-drop: create와 같으나 종료시점에 테이블 DROP (테스트 코드 실행 시 주로 사용)
  • update: 변경분만 반영, 추가만 반영되고 삭제는 반영되지 않는다. (DB Lock을 방지하기 위해 운영DB에서는 사용하면 안된다.)
  • validate: DDL 변경을 수행하지 않고, 엔티티와 테이블이 올바르게 매핑되었는지만 확인
  • none: ddl 자동생성 기능을 사용하지 않음, ddl-auto 옵션을 주석처리 한 것과 같다. (사실상 없는 값이지만 관례상 none이라고 한다.) 

DDL 자동 생성 기능 사용 시 주의 사항

실제 운영 환경에서는 none 또는 validate 옵션을 사용

  • create, create-drop, update 옵션을 사용하면 테이블 변경이 자동으로 반영되어 데이터 손실 위험이 있기 때문

개발 초기 단계는 create 또는 update 옵션을 사용

  • 개발 초기 단계의 특성상 코드와 데이터베이스 테이블이 자주 변경된다.
  • 따라서 개발 초기 단계에서 create 또는 update 옵션을 사용하여 테이블을 빠르게 반영하고 관리해 개발 효율성을 높일 수 있다.

테스트 서버는 update 또는 validate 옵션을 사용

  • 테스트 서버에서는 개발 과정에서의 오류를 찾기 위해 실제 상황과 가까운 환경을 구축하므로
  • 자동으로 데이터베이스 테이블을 관리하면서도 실제 데이터 손실 위험을 최소화하여 Entity와 데이터베이스 스키마 간의 무결성을 유지하고 테스트 환경에서 문제를 빠르게 발견해야 한다.

참고 자료

https://hstory0208.tistory.com/entry/JPA-데이터베이스-초기화-전략-ddl-auto-옵션

 

[JPA] 데이터베이스 초기화 전략 (ddl auto 옵션)

spring.jpa.hibernate.ddl-auto 데이터베이스 ddl 자동 생성 옵션으로 Entity 설정을 참고하여 애플리케이션 실행시점에 Hibernate에서 자동으로 DDL을 생성하여, 필요한 Database의 Table 설정들을 자동으로 수행

hstory0208.tistory.com