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)
111, 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" />

results matching ""

    No results matching ""