[JPA] 햇갈리는 JPA ddl-auto 모드 정리

Ceing·2025년 8월 31일

JPA

목록 보기
13/15

create

  • 기존 테이블 싹 밀고 새로 생성
  • 개발 초기 DB 갈아엎을때 잠깐 씀
  • 즉 운영 환경에선 절대 쓰면 안됨!!

create-drop

  • 애플리케이션 실행 시 자동으로 생성 후 종료되는 시점에 자동으로 DROP
  • 테스트 환경에서 유용
  • 그래서 테스트와 실 application.properties 혹은 application.yml을 분리해서 테스트에선 해당 환경으로 설정하고 실에선 다르게 설정할 수도 있음

validate ★

  • DB 스키마는 손대지 않고 엔티티랑 매핑이 일치하는지만 검증(validate만 수행)
  • 매핑 안 맞으면 실행 시점에 예외 발생(SchemaValidationException)
  • 컬럼 타입은 DB마다 느슨하게 체크됨(CHAR/VARCHAR은 통과)
  • 운영 환경에서 가장 많이 씀, JPA가 DDL로 건들지 못하게 막고 검증만 하므로

update

  • 기존 스키마 유지하면서 엔티티 변경분만 ALTER
  • 개발할땐 편하지만 위험함, 컬럼 타입이 축소되거나 제약 조건이 변경된 것은 반영 안되거나 깨질 수 있음

none

  • JPA가 DDL 관련 작업 아무것도 안함

정리

  • 운영: validate
  • 테스트, 개발초기: create-drop, create, update
profile
이유에 대해 끊임없이 생각하고 고민하는 개발자

0개의 댓글