4.4 데이터베이스 스키마 자동 생성
JPA는 데이터베이스 스키마를 자동으로 생성하는 기능을 지원
<property name="hibernate.hbm2ddl.auto" value="create" />
어플리케이션 실행 시점에 데이터베이스 테이블을 자동으로 생성한다.
<property name="hibernate.show_sql" value="true" />
콘솔에 실행되는 DDL을 출력한다.
출력 예제
Hibernate:
INFO: HHH000227: Running hbm2ddl schema export
drop table MEMBER if exists
Hibernate:
create table MEMBER (
ID varchar(255) not null,
age integer,
createdDate timestamp,
description clob,
lastModifiedDate timestamp,
roleType varchar(255),
NAME varchar(10) not null,
primary key (ID)
)
Hibernate:
alter table MEMBER
add constraint NAME_AGE_UNIQUE unique (NAME, age)
1월 11, 2016 1:22:35 오후 org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000230: Schema export complete
findMember=지한, age=20
Hibernate:
/* insert jpabook.start.Member
*/ insert
into
MEMBER
(age, createdDate, description, lastModifiedDate, roleType, NAME, ID)
values
(?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* update
jpabook.start.Member */ update
MEMBER
set
age=?,
createdDate=?,
description=?,
lastModifiedDate=?,
roleType=?,
NAME=?
where
ID=?
Hibernate:
/* select
m
from
Member m */ select
member0_.ID as ID1_0_,
member0_.age as age2_0_,
member0_.createdDate as createdD3_0_,
member0_.description as descript4_0_,
member0_.lastModifiedDate as lastModi5_0_,
member0_.roleType as roleType6_0_,
member0_.NAME as NAME7_0_
from
MEMBER member0_
members.size=1
Hibernate:
/* delete jpabook.start.Member */ delete
from
MEMBER
where
ID=?
- 스키마 자동 생성 기능이 만든 DDL은 운영환경에서 사용할 만큼 완벽하지 않음.
- 개발 환경에서 사용하거나 매핑시 참고하는 용도로 사용.
- 절대 운영환경에서 사용하지 말자.
이름 매핑 전략 변경
테이블 명이나 컬럼 명이 생략되면 자바의 카멜케이스 표기법을 언더스코어 표기법으로 매핑한다.
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" />