관리 메뉴

피터의 개발이야기

[JPA] Spring JPA의 ddl-auto 기능, 데이터베이스 스키마 자동 관리하기 본문

Programming/Spring

[JPA] Spring JPA의 ddl-auto 기능, 데이터베이스 스키마 자동 관리하기

기록하는 백앤드개발자 2024. 8. 10. 10:10
반응형

ㅁ 들어가며

ㅇ Spring Data JPA를 사용할 때 개발자들이 자주 마주치는 고민 중 하나는 데이터베이스 스키마를 어떻게 관리할 것인가 하는 점이다. 

ㅇ 특히 개발 과정에서 엔티티 클래스가 자주 변경되는 경우, 이를 데이터베이스 스키마에 반영하는 작업이 번거로울 수 있다.

ㅇ 이런 상황에서 JPA의 ddl-auto 기능은 매우 유용한 도구가 된다.

 

ㅁ 관련 글

 [Spring] JUnit5 조건부 테스트 실행방법

  ㄴ JPA의 ddl-auto 기능과 함께 사용하면 개발환경 별 자동 테스트 환경을 구축할 수 있다.

 

ㅁ ddl-auto란?

ㅇ ddl-auto는 JPA가 제공하는 기능으로, 애플리케이션 실행 시 데이터베이스 스키마를 자동으로 관리해주는 옵션이다. 

ㅇ 이 기능을 사용하면 엔티티 클래스의 변경사항을 데이터베이스 스키마에 자동으로 반영할 수 있어, 개발 생산성을 크게 향상시킬 수 있다.

ㅇ 나의 경우, 집에서 PlayGround DB에 테스트 할 경우 유용하게 사용하고 있다.

 

ㅁ 설정방법

spring:
  jpa:
    hibernate:
      ddl-auto: create-drop

kotlin-querydsl > application.yml 에 작성하였던 소스이다.

 

ㅁ ddl-auto의 주요 옵션

옵션 설명
none 아무 작업도 수행하지 않음
validate 엔티티와 테이블이 정확히 매핑되었는지 검증만 수행
update 변경된 스키마만 반영
create 기존 테이블을 삭제하고 새로 생성
create-drop create와 같지만 애플리케이션 종료 시 테이블도 삭제

 

ㅁ 개발 환경별 ddl-auto 설정 방법

환경 옵션
로컬 개발 create 또는 update
테스트 create-drop
스테이징 validate
운영 none 또는 validate

ㅇ ddl-auto 옵션은 개발 환경에 따라 다르게 설정하는 것이 좋다.

ㅇ 'create'나 'create-drop' 옵션은 기존 데이터를 모두 삭제하므로 데이터 손실에 주의해야 한다.

 

ㅁ 내장 데이터베이스와 외부 데이터베이스

ㅇ Spring Boot는 내장 데이터베이스(H2, HSQL, Derby)를 사용할 때 기본적으로 ddl-autocreate-drop으로 설정한다.

ㅇ 반면 외부 데이터베이스를 사용할 때는 기본값이 none이다.

ㅇ 이는 내장 데이터베이스가 주로 개발 및 테스트 목적으로 사용되기 때문이다.

 

ㅁ 함께 보면 좋은 사이트

spring doc - Creating and Dropping JPA Databases

[JPA] hibernate의 ddl-auto 속성의 종류와 주의해야할 점

반응형
Comments