JPA - ddl auto

yeolyeol·2024년 12월 17일
0

til

목록 보기
25/27
post-thumbnail

나는 JPA를 사용하는 이유로 여러가지가 있지만, 단편적으로 개발 과정에서 테이블을 쉽게 만들 수 있기 때문에 사용하는 편이다.

그러면 application.properties나 application.yml에 설정을 해줘야 하는데, 이게 바로 ddl-auto옵션이다.

ddl-auto

ddl-auto의 옵션은 총 5가지 있다.

none

spring.jpa.hibernate.ddl-auto=none

데이터베이스 스키마와 관련된 어떠한 작업도 수행하지 않는다. 데이터베이스 스키마를 수동을 관리하고 싶을 때 유용하며, 프로덕션 환경에서 주로 사용된다.

프로덕션 환경: 실제 사용자가 애플리케이션을 사용하는 환경

validate

spring.jpa.hibernate.ddl-auto=validate

애플리케이션이 시작될 때, Entity 매핑이 데이터베이스 스키마와 일치하는지 검증하며 스키마 변경은 따로 수행하지 않는다. 프로덕션 환경에서 Entity와 데이터베이스 스키마가 일치하는지 확인하고 싶을 때 사용한다.

update

spring.jpa.hibernate.ddl-auto=update

Entity 매핑과 데이터베이스 스키마를 비교하여 필요한 경우 스키마를 업데이트한다.
기존 데이터는 유지되지만, 새로운 Entity나 변경된 Entity 필드는 스키마에 반영된다. 해당 옵션은 엔티티에 변경이 발생할 때 자동으로 스키마를 업데이트하고 싶을 때 유용하다. 하지만 프로덕션 환경에서 스키마 변경이 일어나면 큰 문제로 번질 수 있기 때문에 사용에 주의가 필요하다.

create

spring.jpa.hibernate.ddl-auto=create

애플리케이션이 시작될 때 기존 스키마를 삭제하고 새로 생성한다.
데이터가 모두 삭제되며 Entity 매핑을 기반으로 새로운 스키마가 생성된다. 개발 초기에 빈 데이터베이스 스키마를 반복적으로 생성해야 할 때 유용하다.
단, 기존 데이터가 모두 삭제되기 때문에 프로덕션 환경에서는 사용하지 않는다.

create-drop

spring.jpa.hibernate.ddl-auto=create-drop

create와 유사하지만, 삭제하는 시점이 시작이 아닌 종료될 때 삭제한다. 해당 옵션은 테스트 환경에서 일시적인 데이터베이스 스키마가 필요한 경우 주로 사용되며, 매 테스트 실행 시마다 비어있는 데이터베이스 상태를 유지하고자 할 때 사용된다.
이 역시 프로덕션 환경에서 사용하지 않는다.

profile
한 걸음씩 꾸준히

0개의 댓글

관련 채용 정보