본문 바로가기
스프링(Kotlin) 공부 노트

[JPA] JPA의 Hibernate ddl-auto 속성 정리

by 지게요 2024. 2. 13.
728x90
반응형

이번 포스팅은 요즘 공부하고 있는 스프링부트에서 자주 사용하는 JPA에서 가장 많이 사용하는 프레임워크 Hibernate의 ddl-auto 속성에 관해 간단하게 정리해 보겠다.

# Hibernate ddl-auto란?

데이터베이스 스키마를 자동으로 관리하는 방식을 설정하는 속성이다.

# 속성

- none: 엔티티 클래스를 기반으로 데이터베이스 스키마를 자동으로 생성하지 않는다.

- create: 엔티티 클래스를 기반으로 데이터베이스 스키마를 자동으로 생성한다.

- create-drop: 엔티티 클래스를 기반으로 데이터베이스 스키마를 자동으로 생성하고 애플리케이션 종료 시 스키마를 삭제한다.

- update: 엔티티 클래스 변경 사항에 따라 데이터베이스 스키마를 자동으로 업데이트한다.

- validate: 엔티티 클래스와 데이터베이스 스키마의 일관성을 검사한다.

## none

적절한 예시

- 데이터베이스 관리자가 직접 스키마를 관리하는 경우

- 프로덕션 환경에서 데이터베이스 스키마 변경이 엄격하게 제어되는 경우

 

주의 사항

- 개발자가 직접 데이터베이스 스키마를 생성해야 한다.

- 엔티티 클래스 변경 시 직접 데이터베이스 스키마를 업데이트해야 한다.

## create

적절한 예시

- 새로운 애플리케이션 개발 초기 단계

- 개발 환경에서 테스트를 진행하는 경우

 

주의 사항

- 엔티티 클래스 변경 시 데이터베이스 스키마를 자동으로 업데이트하지 않는다.

- 실수로 데이터베이스 스키마가 손상될 수 있다.

## create-drop

적절한 예시

- 단위 테스트를 진행하는 경우

- 데이터베이스 스키마를 자주 변경하는 경우

 

주의 사항

- 애플리케이션 종료 시 데이터베이스 스키마가 삭제된다.

- 실수로 중요한 데이터가 손실될 수 있다.

## update

적절한 예시

- 배포 환경에서 데이터베이스 스키마를 자동으로 업데이트해야 하는 경우

- 엔티티 클래스 변경이 자주 발생하는 경우

 

주의 사항

- 데이터베이스 스키마 변경 시 충돌이 발생할 수 있다.

- 복잡한 엔티티 클래스 구조에서는 문제가 발생할 가능성이 높아진다.

## validate

적절한 예시

- 엔티티 클래스와 데이터베이스 스키마의 일관성을 검사해야 하는 경우

- 배포 환경에서 데이터베이스 스키마 변경을 안전하게 수행해야 하는 경우

 

주의 사항

- 데이터베이스 스키마를 변경하지 않는다.

- 엔티티 클래스와 데이터베이스 스키마의 일관성을 확인하는 데만 사용할 수 있다.

# 결론

개발 환경

- 개발 초기 단계 : create 또는 create-drop를 사용하여 개발 과정을 간소화한다.

- 개발 완료 후 : validate를 사용하여 엔티티 클래스와 데이터베이스 스키마의 일관성을 검사한다.

 

배포 환경

- 데이터베이스 관리자가 직접 스키마를 관리하는 경우 : none을 사용한다.

- 엔티티 클래스 변경이 자주 발생하지 않는 경우 : update를 사용하여 자동 업데이트를 활용한다.

- 엔티티 클래스 변경이 자주 발생하거나 데이터베이스 스키마 변경 위험이 높은 경우 : validate를 사용하여 안전하게 배포한다.

반응형