본문 바로가기
Spring/Spring Data JPA

spring.jpa.hibernate.ddl-auto

by Mecodata 2024. 3. 19.

ddl-auto 속성

- DB 스키마 생성 및 갱신과 관련된 설정 

- 개발자가 어플리케이션을 실행할 때 JPA가 데이터베이스 스키마를 자동으로 생성, 갱신 또는 유지하도록 할지를 결정함

spring.jpa.hibernate.ddl-auto=update

create 

- 애플리케이션을 실행할 때마다 DB 스키마를 새로 생성

- 만약 DB에 테이블이 있는 상태라면 기존 테이블을 모두 삭제하고 새로 생성함

create-drop

- create와 같이 애플리케이션을 실행할 때마다 DB 스키마를 새로 생성하지만 애플리케이션이 종료되면 스키마를 다시 삭제함

- 주로 테스트 환경에서 사용하며, 애플리케이션의 실행 사이에 스키마를 생성하는 것이 효율적일 때 유용

update

- 현재 DB 스키마를 기준으로 JPA 엔티티의 변경 사항을 추적하여 변경된 사항만 DB에 반영

- 주로 개발 및 테스트 환경에서 사용

validate

- DB 스키마와 JPA 엔티티를 서로 비교하여 일치하지 않는 경우 경고를 발생시킴

- 서로 일치하지 않는다고 해서 스키마를 수정하는 게 아니라 유효성만 검사하는 것

- 주로 운영 환경에서 사용

none

- JPA가 DB 스키마에 아무런 영향을 끼치지 않음

 

ddl-auto 주의사항

- 운영 시에 create나 create-drop를 적용할 경우 DB 테이블이 모두 삭제됨

- 운영 시에 update를 적용할 경우 새로 추가된 컬럼이 Not Null 속성을 갖고 있다면 해당 변경사항이 반영되지 않은 버전 배포 시 테이블에 데이터가 추가되지 않을 수 있음

 

단계별 ddl-auto 권장사항

- 개발 초기 단계 또는 로컬에서 테스트 단계 = create 또는 update
- 테스트 단계 = update 또는 validate
- 운영 단계 = validate 또는 none

 

'Spring > Spring Data JPA' 카테고리의 다른 글

JPQL(Java Persistence Query Language)  (1) 2024.04.05
@AllArgsConstructor 지양 이유 및 대책  (0) 2024.02.26

댓글