개발/Java & Kotlin

[JPA] JPA의 ddl-auto 옵션 알아보기

devhooney 2024. 11. 27. 08:48
728x90

 

 

JPA의 ddl-auto 옵션은 각각 어떤 동작을 하고 어떤 상황에서 사용하는 지 알아보자

 

 

 

ddl-auto 옵션은 스프링 부트 애플리케이션에서 Hibernate와 같은 JPA 구현체를 사용할 때 데이터베이스 스키마 관리를 제어하는 설정이다.

 

이 옵션은 application.properties 또는 application.yml 파일에서 설정할 수 있으며, 다양한 값에 따라 데이터베이스 스키마에 대해 다른 동작을 수행한다.

 

ddl-auto 옵션에는 none, validate, update, create, create-drop 등이 존재한다

 

.

 

1. none

데이터베이스 스키마와 관련된 어떠한 작업도 수행하지 않는다.

데이터베이스 스키마를 수동으로 관리하고 싶을 때 유용하며, 프로덕션 환경에서 주로 사용된다.

 

2. validate

애플리케이션이 시작될 때, 엔티티 매핑이 데이터베이스 스키마와 일치하는지 검증하며 스키마 변경은 따로 수행하지 않는다.

프로덕션 환경에서 엔티티와 데이터베이스 스키마가 일치하는지 확인하고 싶을 때 사용한다.

 

3. update

엔티티 매핑과 데이터베이스 스키마를 비교하여 필요한 경우 스키마를 업데이트한다.

기존 데이터는 유지되지만, 새로운 엔티티나 변경된 엔티티 필드는 스키마에 반영된다.

해당 옵션은 엔티티에 변경이 발생할 때 자동으로 스키마를 업데이트하고 싶을 때 유용하다.

프로덕션 환경에서는 예기치 않은 스키마 변경을 방지하기 위해 주의가 필요하다.

 

4. 광고

728x90

 

5. create

애플리케이션이 시작될 때 기존 스키마를 삭제하고 새로 생성한다.

데이터가 모두 삭제되며 엔티티 매핑을 기반으로 새로운 스키마가 생성된다.

개발 초기에 빈 데이터베이스 스키마를 반복적으로 생성해야 할 때 유용하다.

기존 데이터가 모두 삭제되므로 프로덕션 환경에서는 사용하지 않는다.

 

6. create-drop

create와 유사하지만, 애플리케이션이 종료될 때 스키마를 삭제한다는 점의 차이가 있다.

해당 옵션은 테스트 환경에서 일시적인 데이터베이스 스키마가 필요한 경우 유용하며, 매 테스트 실행 시마다 깨끗한 데이터베이스 상태를 유지하고자 할 때 사용된다.

프로덕션 환경에서는 사용하지 않습니다.

 

 

728x90