[Spring] JPA의 ddl-auto 옵션에 대해 알아보자

2024. 3. 5. 08:06·🍀 Spring Boot

들어가며

스프링 부트 프로젝트를 시작할 때, application.yml 파일을 생성하여 설정하다보면, 항상 맞이하게 되는 spring.jpa.hibernate.ddl-auto 옵션이 있습니다. 처음에는 create와 update로만 설정하곤 했지만, 더 다양한 옵션이 존재합니다. 해당 포스팅에서는 JPA의 ddl-auto의 각 옵션들은 어떻게 동작하는지와 어떤 환경에서 사용해야 하는걸까에 대해 정리해보았습니다.


❏ ddl-auto란?

ddl-auto란 JPA 구현체인 Hibernate가 엔티티 클래스 기반으로 데이터베이스 스키마를 어떻게 생성하거나 검증할지 결정하는 설정값입니다.

spring:
  jpa:
    hibernate:
      ddl-auto: update

application.yml 파일에 위처럼 설정하여 사용하여, 애플리케이션의 실행에 따라 어떤 방식으로 데이터베이스 스키마를 관리할지 제어할 수 있습니다.

 

❍ create

create는 기존 테이블을 모두 삭제하고, 엔티티 클래스를 기반으로 매핑되는 테이블을 자동으로 새로 생성합니다. DROP + CREATE

따라서, 기존 테이블에서의 데이터는 모두 삭제되며, 개발 초기에 구조를 자주 변경하는 경우에 유용하게 사용됩니다. 운영 환경에서는 아무래도 적합하지 않습니다. ☹️

 

❍ create-drop

create-drop은 create에서 추가적으로 애플리케이션 종료 시에 테이블을 모두 삭제한다는 특징이 있습니다. 매 테스트마다 초기화된 데이터베이스가 필요하다면 해당 옵션을 유용하게 사용할 수 있습니다. 👍

 

❍ update

update는 엔티티 클래스와 매핑되는 테이블에 변경 사항을 반영하여 자동으로 수정합니다. 기존 데이터가 삭제되지 않고 유지되며, 새로운 컬럼이 추가되는 등의 변동 사항이 반영됩니다.

하지만 모든 변경 사항에 대해 반영하는 것이 아닙니다. 예를 들어 String 타입이 int 타입으로 변경된 컬럼이 존재할 때, 이러한 변경은 반영되지 않습니다.

엔티티의 변경이 발생할 때 자동으로 업데이트만 하고 싶다면 편리하지만, 이 역시 운영 환경에서는 적합하진 않다고 생각합니다.

 

❍ validate

validate는 애플리케이션이 실행될 때, 엔티티 클래스와 매핑하며 일치하는지 확인하며 스키마를 변경하지 않습니다. 따라서 운영 배포 전에 확인하는 용이나 운영 도중 엔티티와 일치하는지 검증하는 용도로 사용합니다.

 

❍ none

none은 그 어떠한 작업도 하지 않습니다. 스키마에 대한 생성이나 변경 작업을 수동으로 관리하고 싶을 때 해당 옵션을 사용하며, 운영 환경에서 주로 사용되는 옵션입니다.

 

❏ 마무리

개발 환경일 땐, create나 update

테스트 환경일 땐, create-drop

운영 환경일 땐, none이나 validate

를 사용해봅시다!

반응형
'🍀 Spring Boot' 카테고리의 다른 글
  • 엔티티 매니저란? (feat. 영속성 컨텍스트, 엔티티 매니저 팩토리)
  • [Spring/Error] @Builder 사용법, @Builder.Default (feat. warning: @Builder.Default requires ~)
  • [Spring] Lombok의 @Builder와 @SuperBuilder
  • [Spring] filter 내에서 발생한 예외 처리하기 || AuthenticationEntryPoint, AccessDeniedHandler
dmaolon
dmaolon
프로그래밍을 공부한 내용을 기록하는 공간입니다.
  • dmaolon
    기록 남기기
    dmaolon
  • 전체
    오늘
    어제
    • ALL (260)
      • ➰ Series (5)
      • 🎯PS (168)
        • Algorithm (15)
      • ☕ Java (11)
      • 🍀 Spring Boot (29)
      • 💬 Database (9)
      • 🐣 Computer Science (14)
      • 👍 Daily (4)
      • 🎁ReactJS (4)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 태그

    파이썬
    프로그래밍
    BFS
    dfs
    프로그래머스
    알고리즘
    자바
    백준
    Spring
    코딩
  • hELLO· Designed By정상우.v4.10.1
dmaolon
[Spring] JPA의 ddl-auto 옵션에 대해 알아보자
상단으로

티스토리툴바