ddl-auto

  • 애플리케이션 시작 시점에 Hibernate가 데이터베이스 스키마를 어떻게 다룰지를 결정하는 설정
  • 스프링 부트 애플리케이션에서 Hibernate와 같은 JPA 구현체를 사용할 때 데이터베이스 스키마 관리를 제어하는 설정

none

  • 아무런 동작도 수행하지 않음
  • 스키마를 변경하거나 검증하지 않음

validate

  • 애플리케이션 시작 시 엔티티의 매핑 정보와 데이터베이스 스키마가 일치하는지 검증
  • 스키마가 맞지 않으면 예외 발생
  • 프로덕션 환경에서 스키마 변경 없이 엔티티와의 일관성을 유지할 때 사용

update

  • 엔티티의 변경 사랑에 맞춰 데이터베이스 스키마를 자동으로 업데이트
  • 테이블이나 컬럼 추가 등 간단한 변경은 반영되지만 복잡한 변경은 처리되지 않을 수 있음
  • 프로토타이핑이나 테스트 용도로 적합

create

  • 애플리케이션 시작 시 기존 스키마를 모두 삭제하고 엔티티 매핑 정보를 기반으로 새 스키마 생성
  • 기존 데이터는 모두 삭제되므로 주로 초기 개발 단계나 데이터가 필요 없는 테스트 환경에서 사용

create-drop

  • 시작 시 새 스키마 생성, 종료 시 스키마 삭제
  • 일회성 테스트나 임시 디비가 필요한 경우 유용

프로덕션 환경에서 스키마 변경은 어떻게 해야하나요? 🤓

스키마 변경이 필요할 때는 적절한 데이터베이스 마이그레이션 도구(Flyway, Liquibase 등)를 사용하여 제어된 방식으로 스키마를 관리하거나, 사용자가 없는 새벽에 스키마 변경 작업을 수동으로 진행하는 것이 더욱 안전할 수 있습니다.

Ref.