본문 바로가기
JAVA/SpringBoot

Spring Boot에서 spring.jpa.hibernate.ddl-auto 설정 이해하기

by GangDev 2024. 3. 25.

 

spring.jpa.hibernate.ddl-auto 는 Spring Boot 애플리케이션에서 JPA 와 Hibernate를 사용할 때 데이터베이스 스키마 관리를 자동화하기 위한 설정이다.

애플리케이션이 시작할 시 데이터베이스 스키마를 자동으로 생성, 업데이트, 검증 또는 삭제하는 방법을 지정한다.

 

사용법은 application.properties 파일에 다음처럼 입력하면 된다.

spring.jpa.hibernate.ddl-auto=update

 

spring.jpa.hibernate.ddl-auto 옵션의 주요 값은 5가지가 있다: none, create, create-drop, update, validate.

 

none: 기본값으로, 자동 DDL(Data Definition Language) 실행을 수행하지 않는다. 데이터베이스 스키마가 이미 존재하는 것으로 가정하고, 어떠한 변경도 적용하지 않는다.

 

create: 애플리케이션을 시작할 때마다 데이터베이스 스키마를 새로 생성한다.
기존에 존재하는 스키마는 삭제되고, 새 스키마가 생성된다.
(주로 개발 단계에서 사용되며, 데이터 손실이 발생할 수 있다)

 

create-drop: 애플리케이션 시작 시 데이터베이스 스키마를 생성하고, 애플리케이션이 종료될 때 스키마를 삭제한다.
(주로 테스트 목적으로 사용)

 

update: 데이터베이스 스키마를 현재 애플리케이션의 엔티티 상태에 맞게 업데이트한다.
기존 스키마는 유지되며, 필요한 변경사항만 적용된다.
(개발 및 테스트 단계에서 유용하다)

 

validate: 애플리케이션 시작 시, 데이터베이스 스키마가 JPA 엔티티와 일치하는지 검증한다. 일치하지 않으면 오류가 발생한다.
(프로덕션 환경에서 유용하다. 실제 데이터베이스 변경은 수행하지 않는다.)


혹여 필자처럼 create이나 update로 설정해놓고 개발하다가, none이나 validate으로 바꿔야 하는 걸 깜빡 잊고 그대로 실행하는 바람에 데이터베이스의 데이터가 날아가는 사람이 발생하지 않길 바란다.
그냥 혼자서 하는 실습이었기에 망정이지, 현장이었으면 눈앞이 깜깜해졌을 것...