이 글은 김영한의 [자바 ORM 표준 JPA 프로그래밍 - 기본편]을 수강하며 정리한 글입니다.
👉 기본 환경
- Language: Java
- IDE: IntelliJ
JPA에서는 DDL을 애플리케이션 실행 시점에 자동 생성해주는 기능을 보유
1
2
|
<property name="hibernate.hbm2ddl.auto" value="" />
|
데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.hbm2ddl.auto" value="create" />
<!--
create table Member (
id bigint not null,
age integer not null,
name varchar(255),
primary key (id)
)
-->
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create" />
<!--
create table Member (
id number(19,0) not null,
age number(10,0) not null,
name varchar2(255 char),
primary key (id)
)
-->
|
⭐ 이렇게 생성된 DDL은 개발 장비에서만 사용
생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후 사용
hibernate.hbm2ddl.auto 옵션
- create: 기존테이블 삭제 후 다시 생성 (DROP + CREATE)
1
2
|
<property name="hibernate.hbm2ddl.auto" value="create" />
|
- create-drop: create와 같으나 종료시점에 테이블 DROP
1
2
|
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
|
- update: 변경분만 반영
1
2
|
<property name="hibernate.hbm2ddl.auto" value="update" />
|
⭐ Entity에서 필드 추가 시, alter DDL이 자동 생성되어 column이 생성되지만 필드를 삭제한다고 column이 삭제되진 않음
- validate: 엔티티와 테이블이 정상 매핑되었는지만 확인
1
2
|
<property name="hibernate.hbm2ddl.auto" value="validate" />
|
* 테이블에 매칭되지 않는 필드 존재 시, 오류 발생
(반대의 경우로, 엔티티에 매칭되지 않는 컬럼 존재할 경우에는 오류 발생 X)
- none: 엔티티와 테이블이 정상 매핑되었는지만 확인
1
2
|
<property name="hibernate.hbm2ddl.auto" value="none" />
|
* none 대신 위의 4가지 옵션값이 아닌 값을 입력할 경우, hibernate.hbm2ddl.auto 실행 X
'Java > JPA' 카테고리의 다른 글
[JPA_Basic] 객체 지향 모델링 (0) | 2023.08.08 |
---|---|
[JPA_Basic] 기본키 매핑 (0) | 2023.08.05 |
[JPA_Basic] Persistence Context 장점 (0) | 2023.07.29 |
[JPA] @PrePersist (0) | 2023.06.25 |
[JPA] JOIN Null값 처리 (0) | 2023.06.20 |