JPA ddl-auto 설정

한민기·2024년 8월 20일

JPA

목록 보기
4/7

JPA 에는 DDL를 자동으로 생성, 수정해주는 옵션이 있다. 필요할 때는 편리하게 사용할 수 있지만 모르고 사용하다가 실수하는 경우가 많아 정리하였습니다.

create

엔티티에 등록된 클래스와 맵핑된 테이블을 생성한다. 만약에 기존에 해당 엔티티와 맵핑된 테이블이 존재하면 drop시키고 생성한다.

create-drop

엔티티에 등록된 클래스와 매핑된 테이블을 생성하고 에플리케이션을 종료할 떄 해당 테이블을 삭제 시킨다. create 와 같이 생성시 해당 엔티티와 매핑된 테이블이 존재하면 drop한다.

update

엔티티에 등록된 클래스와 매핑된 테이블이 없으면 생성하고 있으면 컬럼을 update한다.
기존에 존재하는 컬럼의 속성(nullable, 크기, 데이터 타입 등)은 건드리지 않고, 새로운 컬럼이 추가되는 변경사항만 반영한다

validate

validate는 테이블을 수정하거나 생성하지 않는다.
엔티티와 해당 테이블이 정상적으로 매핑하는지 확인한다. 만약 테이블이 존재하지 않거나 컬럼이 존재하지 않은면 예외가 발생한다.

none

사실상 아무것도 설정하지 않은 상태

정리

  • create는 초기 단계 때
  • create-drop은 테스트 할 때
  • update는 entity의 수정사항을 적용시킬 때
  • validate는 현재 내 entity와 테이블이 잘 매핑 되어있는지 확인 할 때
  • 배포 환경일때 되도록 사용하지 않는 걸 추천합니다.

저의 경험

사실 저는 create-drop를 create인줄 알고 사용하다 개발 환경에서 열심히 데이터를 넣어두고 에플리케이션이 종료되며 스르륵 데이터가 사라지는 경험을 하였습니다. 다들 미리 공부해둬서 잘 사용하시길 바랍니다.

profile
백엔드 개발자

0개의 댓글