JPA는 데이터베이스 스키마를 자동으로 생성하는 기능을 지원한다.
클래스의 매핑 정보를 보면 어떤 테이블에 어떤 컬럼을 사용하는지 알 수 있다.
JPA는 매핑정보와 데이터베이스 방언을 이용해 데이터베이스 스키마를 생성한다.
<!--persistence.xml 추가--><property name="hibernate.hbm2ddl.auto" value="create"/>
이 속성을 추가하면 애플리케이션 실행 시점에 데이터베이스 테이블을 자동으로 생성한다.
hibernate.show_sql 속성을 true로 설정하면 콘솔에 DDL을 출력한다.
--자동 생성됨--Hibernate:drop table if exists MEMBER CASCADE--Hibernate:create table MEMBER ( ID varchar(255) not null, age integer, createdDate timestamp, description clob, lastModifiedDate timestamp, roleType varchar(255), NAME varchar(255), primary key (ID))
기존 테이블을 삭제하고 다시 생성한 것을 알 수 있다.
타입을 보면 지정한 데이터베이스 방언에 따라 다라진다.
오라클일 경우 integer -> number
테이블이 자동으로 생성되므로 직접 생성하는 수고를 덜 수 있다.
운영환경에서 사용할 만큼 완벽하지는 않아 개발 환경에서 사용하거나 매핑을 어떻게 해야 하는지 참고하는 정도로만 사용하는 것이 좋다.
| 옵션 | 설명 |
|---|---|
| create | 기존 테이블을 삭제하고 새로 생성한다.(DROP + CREATE) |
| create-drop | create 속성에 추가로 애플리케이션을 종료할 때 생성한 DDL 제거.(DROP + CREATE + DROP) |
| update | 데이터베이스 테이블과 엔티티 매핑정보를 비교해서 변경 사항만 수정한다. |
| validate | 데이터베이스 테이블과 엔티티 매핑정보를 비교해서 차이가 있으면 경고를 남기고 애플리케이션을 실행하지 않는다.DDL을 수정하지 않음 |
| none | 자동 생성 기능을 사용하지 않으려면 hibernate.hbm2ddl.auto 속성 자체를 삭제하거나 유효하지 않은 옵션 값을 주면 된다. |