spring.jpa.hibernate.ddl-auto: 서버 시작시 DB 테이블 스키마 업데이트 설정

노현아·2024년 4월 19일

spring.jpa.hibernate.ddl-auto

  • application.properties
spring.jpa.hibernate.ddl-auto=create
  • application.yml
jpa:
 hibernate:
   ddl-auto: create

JPA는 엔티티로 등록된 클래스와 매핑되는 테이블을 데이터베이스에 자동으로 생성하는데, 이때 위 예시 코드와 같이 create로 설정하면, 기존에 매핑되는 테이블을 삭제하고 다시 테이블 생성한다. 내부적으로 시행되는 ddl은 아래와 같다.

drop table if exists [table_name] cascade 
create table [table_name] ...
  • create-drop: create과 동일한 작동 후 애플리케이션 종료 시 테이블을 삭제한다.
  • update : create과 동일한 작동을 하지만 기존 테이블을 삭제하지 않고, 수정사항에 엔티티 내 새로운 컬럼이 추가되었다면 수정사항을 반영한다. 자료형이 변경되었을 때는 반영되지 않는다.
  • validate : ddl을 작성해 테이블을 생성 또는 수정하지 않고, 엔티티 클래스와 테이블이 정상적으로 매핑되는지 검사하고, 테이블이 없거나 컬럼이 없다면 예외 발생 후 애플리케이션 종료한다. 엔티티 필드에 해당하는 컬럼이 없다면 예외지만, 테이블의 컬럼이 더 많은 것과 같은 경우는 아무 예외 발생시키지 않는다.
  • none 명시하거나 아예 속성을 적지 않으면 아무 일도 일어나지 않는다.

위의 속성 중 validate, none을 제외한 속성은 운영 db에는 절대로 사용하면 안 된다.

  • 개발 초기 단계 또는 로컬에서 테스트 : create 또는 update
  • 테스트 서버 : update 또는 validate
  • 스테이징 및 운영 서버 : validate 또는 none
profile
성실함과 끊임없는 학습을 통해 성장하는 개발자 지망생입니다. 새로운 도전과 배움을 즐기며 더 나은 코드를 꿈꿉니다.

0개의 댓글