[JPA] 데이터 베이스 스키마 자동 생성 옵션

rul9office·2021년 8월 15일
0

JPA에서는 데이터 베이스 스키마를 자동 생성하는 옵션을 제공한다.
옵션에 따라 애플리케이션 실행 시점에 데이터베이스 dialect 에 맞는 적절한 DDL 이 생성된다.

<property name="hibernate.hbm2ddl.auto" value="create" />

Mode

  • create : 기존 테이블 삭제 후 다시 생성 (drop + create)
  • create-drop : create 와 같지만 애플리케이션 종료 시점에 테이블 drop (테스트 케이스 수행 시 사용)
  • update : 컬럼 추가된 변경부분만 반영
  • validate : 엔티티와 테이블이 정상 매핑되었는지 검증
  • none : 사용하지 않음

유의사항

개발 초기 단계에서는 create 또는 update 사용이 가능하지만, 여러 명이 동시에 사용하는 테스트 서버에서는 update 또는 validate 정도만 권장된다.
스테이징 / 운영 환경에서는 validate 또는 none만 사용하는 것이 좋다. update 모드를 사용 시 alter 가 실행되면 운영 중인 DB에 lock이 발생할 수 있기 때문이다.
운영 환경에서는 DDL 스크립트를 적절히 다듬어서 테이블을 직접 생성하거나 변경하여 사용하는 것을 권장한다.

정리

나 역시 해당 옵션은 로컬 환경이나 개발 초기 단계에서만 사용하고 개발 / 운영 환경에서는 절대 사용하지 않는다.
얼마전 개발용 DB를 사용하면서 누군가 실수로 create 모드로 변경해놓았다가 기존 테이블들이 다 날아가는 아찔한 광경을 목격한 적 있다. 😳
JPA 가 제공하는 편리한 기능을 사용하기 전, 반드시 주의해야 할 점을 복기하는 차원에서 정리해 본다.

profile
Brings a positive attitude, loves challenges, and enjoys sharing knowledge with others.

0개의 댓글