JPA 를 사용해서 테이블과 매핑할 클래스는 @Entity
어노테이션을 필수로 붙여야 한다. @Entity
가 붙은 클래스는 JPA 가 관리하는 것으로, 엔티티라 부른다.
@Table
은 엔티티와 매핑할 테이블을 지정한다. 생략하면 매핑한 엔티티 이름을 테이블 이름으로 사용한다.
JPA 는 데이터베이스 스키마를 자동으로 생성하는 기능을 지원한다. 클래스의 매핑 정보를 보면 어떤 테이블에 어떤 컬럼을 사용하는지 알 수 있다. JPA 는 이 매핑 정보와 데이터베이스 방언을 사용해서 데이터베이스 스키마를 생성한다.
<property name="hibernate.hbm2ddl.auto" value="create">
create
속성값으로 설정하면 애플리케이션 실행 시점에 데이터베이스 테이블을 자동으로 생성한다. 참고로 hibernate.show_sql
속성을 true
로 설정하면 콘솔에 실행되는 테이블 생성 DDL 을 출력할 수 있다.
하지만 스키마 자동 생성이 만든 DDL 은 운영 환경에서 사용할만큼 완벽하지는 않으므로 개발 환경에서 사용하거나 매핑을 어떻게 해야 하는지 참고하는 정도로만 사용하는 것이 좋다.
create
: 기존 테이블을 삭제하고 새로 생성한다 (DROP + CREATE)create-drop
: create 속성에 추가로 애플리케이션을 종료할 때 생성한 DDL 을 제거한다. (DROP + CREATE + DROP)update
: 데이터베이스 테이블과 엔티티 매핑정보를 비교해서 변경 사항만 수정한다.validate
: 데이터베이스 테이블과 엔티티 매핑정보를 비교해서 차이가 있으면 경고를 남기고 애플리케이션을 실행하지 않는다. 이 설정은 DDL 을 수정하지 않는다.