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 |