지니의 개발로그
JPA ddl-auto 종류 본문
🚩 20240619 TIL
🟢 none
- DDL을 자동으로 생성하지 않는다.
- Hibernate는 데이터베이스 스키마에 어떤 변경도 하지 않는다.
- 프로덕션 환경에서 사용
- 개발자가 수동으로 데이터베이스 스키마를 관리하는 경우 적합
🟢 validate
- 기존 데이터베이스 스키마가 엔티티 매핑과 일치하는지 검증한다.
- Hibernate는 데이터베이스 스키마에 어떤 변경도 하지 않는다.
- 데이터베이스 스키마와 엔티티 정의 간 불일치를 찾고 싶을 때 사용
- 주로 프로덕션 환경에서 사용
🟢 update
- 엔티티와 매핑된 테이블을 업데이트한다.
- 새로운 필드나 테이블을 추가하지만, 기존 데이터를 보존한다.
- 변경된 부분만 반영
- 개발 중에 데이터 손실 없이 스키마를 업데이트하고자 할 때 사용
🟢 create
- 기존 테이블을 삭제하고 엔티티에 맞추어 새로운 테이블을 생성한다.
- DROP + CREATE 개념
- 기존 데이터는 삭제된다.
- 개발 환경에서 초기 설정 시
- 데이터베이스 스키마를 전면 재구성할 때 사용
🟢 create-drop
- create와 동일하게 동작하지만, 애플리케이션 종료 시점에 테이블을 삭제
- 종료시점에 테이블을 DROP
- 테스트 환경에서 사용
- 애플리케이션 종료 후 모든 데이터를 삭제하고 초기상태로 되돌릴 때 사용
🔵 정리
설정 값들은 개발, 테스트, 프로덕션 환경 등 사용 환경과 목적에 따라 적절히 선택하여 사용 할 것.
none | DDL을 자동으로 생성하지 않습니다. |
validate | 기존 스키마와 엔티티 매핑을 검증합니다. 데이터베이스에 어떤 변경도 하지 않습니다. |
update | 엔티티와 매핑된 테이블을 업데이트합니다. 데이터는 보존되지만, 스키마에 맞추어 필요한 변경을 합니다. |
create | 기존 테이블을 삭제하고 엔티티에 맞추어 새로운 테이블을 생성합니다. 데이터는 삭제됩니다. |
create-drop | 애플리케이션 종료 시점에 테이블을 삭제하는 점을 제외하고 create와 동일하게 동작합니다. |
'내일배움캠프' 카테고리의 다른 글
Annotation type expected 오류 : @Column 어노테이션 (0) | 2024.07.12 |
---|---|
JDBC란 (0) | 2024.06.18 |
ORM(Object-Relational Mapping) 프레임워크란? (0) | 2024.06.18 |
Hibernate이란? (0) | 2024.06.14 |
메모리 영역의 분류 (1) | 2024.06.14 |