🛢 데이터베이스 스키마 자동 생성

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

테이블이 자동으로 생성되므로 직접 생성하는 수고를 덜 수 있다.

운영환경에서 사용할 만큼 완벽하지는 않아 개발 환경에서 사용하거나 매핑을 어떻게 해야 하는지 참고하는 정도로만 사용하는 것이 좋다.

hibernate.hbm2ddl.auto 속성 정리

옵션 설명
create 기존 테이블을 삭제하고 새로 생성한다.(DROP + CREATE)
create-drop create 속성에 추가로 애플리케이션을 종료할 때 생성한 DDL 제거.(DROP + CREATE + DROP)
update 데이터베이스 테이블과 엔티티 매핑정보를 비교해서 변경 사항만 수정한다.
validate 데이터베이스 테이블과 엔티티 매핑정보를 비교해서 차이가 있으면 경고를 남기고 애플리케이션을 실행하지 않는다.DDL을 수정하지 않음
none 자동 생성 기능을 사용하지 않으려면 hibernate.hbm2ddl.auto 속성 자체를 삭제하거나 유효하지 않은 옵션 값을 주면 된다.