
JPA 에는 DDL를 자동으로 생성, 수정해주는 옵션이 있다. 필요할 때는 편리하게 사용할 수 있지만 모르고 사용하다가 실수하는 경우가 많아 정리하였습니다.
엔티티에 등록된 클래스와 맵핑된 테이블을 생성한다. 만약에 기존에 해당 엔티티와 맵핑된 테이블이 존재하면 drop시키고 생성한다.
엔티티에 등록된 클래스와 매핑된 테이블을 생성하고 에플리케이션을 종료할 떄 해당 테이블을 삭제 시킨다. create 와 같이 생성시 해당 엔티티와 매핑된 테이블이 존재하면 drop한다.
엔티티에 등록된 클래스와 매핑된 테이블이 없으면 생성하고 있으면 컬럼을 update한다.
기존에 존재하는 컬럼의 속성(nullable, 크기, 데이터 타입 등)은 건드리지 않고, 새로운 컬럼이 추가되는 변경사항만 반영한다
validate는 테이블을 수정하거나 생성하지 않는다.
엔티티와 해당 테이블이 정상적으로 매핑하는지 확인한다. 만약 테이블이 존재하지 않거나 컬럼이 존재하지 않은면 예외가 발생한다.
사실상 아무것도 설정하지 않은 상태
- create는 초기 단계 때
- create-drop은 테스트 할 때
- update는 entity의 수정사항을 적용시킬 때
- validate는 현재 내 entity와 테이블이 잘 매핑 되어있는지 확인 할 때
- 배포 환경일때 되도록 사용하지 않는 걸 추천합니다.
사실 저는 create-drop를 create인줄 알고 사용하다 개발 환경에서 열심히 데이터를 넣어두고 에플리케이션이 종료되며 스르륵 데이터가 사라지는 경험을 하였습니다. 다들 미리 공부해둬서 잘 사용하시길 바랍니다.