[JPA] 스키마 자동 생성 전략

옹심이·2024년 12월 15일
0
post-thumbnail

spring.jpa.hibernate.ddl-auto

JPA를 사용하면 Entity 클래스를 반영하여 어플리케이션 실행 시점에 자동으로 DDL을 생성하고, 실제 데이터베이스의 테이블에 자동으로 스키마를 반영한다.

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

persistence.xml을 사용하여 설정하는 경우에는 다음과 같이 value 값으로 옵션을 지정할 수 있다.

스키마 자동 생성 옵션

create : 기존 테이블을 drop 후 다시 생성한다.

create-drop : create와 같지만 어플리케이션 종료 시점에 테이블을 drop한다. 테스트 케이스 실행 시에 사용한다.

update : 테이블을 drop하지 않고 alter로 변경 사항을 업데이트 하고 싶을 때 사용한다. 하지만 추가될 때만 반영된다.

validate : 엔티티와 테이블이 정상적으로 매핑되었는지 확인할 때 사용한다.

none : 기능을 사용하지 않는다. 설정 태그를 삭제하는 것과 같다.

스키마 자동 생성 기능 사용시 주의점

실제 운영 환경에서는 validate와 none을 사용한다.

이 옵션들은 테이블 변경이 자동으로 반영되어 데이터 손실의 위험이 있다. 그래서 실제 운영 환경에서는 사용하지 않는 것이 좋다.

create, create-drop, update 등을 사용하면 어플리케이션 실행 시 자동으로 테이블을 생성, 업데이트, 삭제하게 되고 이는 운영에 큰 문제를 일으킬 수 있다.

개발 초기 단계에는 create와 update를 사용한다.

개발 초기에는 코드와 테이블이 자주 변경되기 때문에 로컬 또는 개발 환경에서 create와 update 옵션을 사용해도 괜찮다.

개발 서버와 테스트 서버는 update와 validate를 사용한다.

테스트 서버에서 테스트를 실행하면서 create를 사용하면 테이블의 drop과 생성의 반복이 되고, 결국 데이터의 손실을 불러온다.

0개의 댓글