Java Spring에서 JPA의 구현체 Hibernate를 사용하게 되면
resources > applicaton.properties 에 아래 옵션을 추가해주어야 한다.
spring.jpa.hibernate.ddl-auto=none
ddl-auto 옵션 값으로는 아래의 값들이 존재한다.
- create
- create-drop
- update
- validate
- none
create
- Entity로 등록된 클래스로 매핑된 테이블, 컬럼을 생성해준다. 서버 재실행 시 같은 테이블이 존재한다면 기존의 테이블을 drop하고 새롭게 생성해준다.
create-drop
- create와 같은 옵션을 가지고 있지만, 서버 종료시 기존의 테이블을 drop을 한다.
update
- 기존 테이블이 존재하지 않다면 => 테이블을 생성
- 기존 테이블이 존재한다면 => 기존 테이블 컬럼의 속성(nullable, 크기, 데이터 타입 등)은 변경하지 않고, 새롭게 추가되는 column만 추가한다.
validate
-
기존의 테이블을 생성하거나 변경하지 않고, 서버 시작 시 Entity DDL을 작성하여 기존의 테이블을 검사를 진행한다.
-
Entity 클래스의 컬럼과 매핑되는 테이블에 존재만 한다면, 테이블에 컬럼이 더 많아도 상관X
-
테이블이 존재하지 않거나, 테이블에 엔티티 필드에 매핑되는 컬럼이 존재하지 않는다면 예외를 발생시키고 서버를 종료한다.
none
- 위의 4가지 경우를 제외한 모든 경우에 해당한다.
- 스프링부트의 경우에는 none이라고 명시하거나 아예 ddl-auto 속성을 명시하지 않아야 한다. 이 경우에는 아무 일도 일어나지 않는다.
주의) 신경써야 한다.
- 개발 초기, 로컬 : create 또는 update
- 테스트 서버 : update 또는 validate
- 스테이징 및 운영 서버 : validate 또는 none