Hibernate ddl-auto

DevChoi·2024년 3월 20일

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

0개의 댓글