본문 바로가기

Back-End/JPA

JPA 데이터베이스 스키마 자동 생성과 주의점

JPA는 애플리케이션 실행 시 데이터베이스 스키마를 자동으로 생성하고 관리할 수 있는 기능을 제공한다. 이 기능은 개발 초기나 테스트 환경에서 유용하지만, 실무에서는 신중이 사용되어야 한다.


1. JPA 데이터베이스 스키마 자동 생성 옵션

주요 옵션

  • create: 애플리케이션 시작 시 기존 테이블을 삭제하고 새로 생성.
  • create-drop: 애플리케이션 시작 시 테이블 생성, 종료 시 삭제.
  • update: 테이블을 생성하거나 변경 사항만 반영. 기존 데이터는 유지.
  • validate: 엔티티와 테이블 매핑을 검증. 스키마 변경은 하지 않음.
  • none: 아무 작업도 하지 않음.

2. 설정 방법

// application.properties
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

3. 각 옵션의 특징과 사용 시점

옵션 특징 사용 시점
create 기존 테이블을 모두 삭제하고 새로 생성. 데이터 손실 위험이 있음 개발 초기나 테스트 환경에서 사용
create - drop create와 동일하나, 애플리케이션 종료 시 삭제. 임시 테스트 환경에서 사용
update 테이블이 없으면 생성, 엔티티 변경 사항을 반영. 기존 데이터는 유지되지만 스키마 손상 가능성 있음. 로컬 개발 환경에서 사용. 실무 환경은 신중히
validate 엔티티와 테이블 매핑만 검증. 데이터 베이스는 수정 하지 않음. 실무 환경에서 권장. 잘못된 매핑을 빠르게 확인 할 수 있음.
none JPA가 데이터 베이스 스키마에 영향을 주지 않음. 실무 환경에서 권장.

4. 환경별 설정

  • 개발 환경: spring.jpa.hibernate.ddl-auto=update
  • 테스트 환경: spring.jpa.hibernate.ddl-auto=create-drop
  • 프로덕션 환경: spring.jpa.hibernate.ddl-auto=none 또는 validate

'Back-End > JPA' 카테고리의 다른 글

상속관계 매핑(JPA)  (0) 2024.12.17
JPA 연관관계 Mapping(2)  (0) 2024.12.14
JPA 연관관계 Mapping  (0) 2024.12.10
JPA - Entity 만들기  (0) 2024.12.10
JPA의 지연 저장소, 변경 감지, 그리고 flush와 Commit  (1) 2024.12.10