스프링 부트 애플리케이션에서 Hibernate와 같은 JPA 구현체를 사용할 때 데이터베이스 스키마 관리를 제어하는 설정이다.
application.properties 또는 application.yml 파일에 설정할 수 있다.
application.properties ▼
# 중에 상황에 맞는 설정을 하나 추가해주면 된다.
spring.jpa.hibernate.ddl-auto=none
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.ddl-auto=create
spring.jpa.hibernate.ddl-auto=create-drop
- none : 데이터베이스 스키마와 관련된 어떠한 작업도 수행하지 않는다. 주로 데이터베이스 스키마를 수동으로 관리하고 싶을때 유용하며, 사용자에게 배포되어 실제로 사용되는 프로덕션 환경에서 주로 사용된다.
- validate : 애플리케이션이 시작될 때, entity 매핑이 데이터베이스와 일치하는지 검증하며 스키마 변경은 따로 하지않는다. 프로덕션 환경에서 entity와 데이터베이스 스키마가 일치하는지 확인하고 싶을 때 주로 사용된다.
- update : entity 매핑과 데이터베이스 스키마를 비교하여 필요한 경우 스키마를 업데이트한다. 기존 데이터는 유지되지만, 새로운 entity나 변경된 entity 필드는 스키마에 반영된다.주로 entity에 변경이 발생할 때 스키마에 자동으로 업데이트 시키고 싶을 때 사용된다.
- create : 애플리케이션이 시작될 때 기존 스키마를 삭제하고 새로 생성한다. 데이터가 모두 삭제되며 entity 매핑을 기반으로 새로운 스키마가 생성된다. 개발 초기에 반복적으로 사용된다.
- create-drop : create와 유사하지만 애플리케이션이 종료될 때 스키마를 삭제한다. 테스트 환경에서 일시적인 데이터베이스 스키마가 필요한 경우에 유용하고, 매 테스트 실행 시마다 깨끗한 데이터베이스 상태를 유지할 때 사용된다.
'🖥️ Back-end' 카테고리의 다른 글
| Redis 기본 문법 알아보기 (1) | 2025.03.03 |
|---|---|
| 인메모리 저장소와 Redis 란? - Redis Stack 설치 (0) | 2025.03.01 |
| JPA의 N+1 문제란? (0) | 2025.02.21 |
| Spring Data JPA에서 새로운 Entity를 판단하는 방법? (0) | 2025.02.14 |
| EntityManager 란? (0) | 2025.02.13 |