JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다.
@Entity가 붙은 클래스는 JPA가 관리하고, 엔티티라 부른다.
@Entity 적용 시 주의사항
@Table은 엔티티와 매핑할 테이블을 지정한다. 생략하면 매핑한 엔티티 이름을 테이블 이름으로 사용한다.
JPA는 데이터베이스 스키마를 자동으로 생성하는 기능을 지원한다. (애플리케이션 실행 시점에 자동 생성)
JPA는 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL을 생성한다.
하지만 이렇게 생성된 DDL은 개발 장비에서만 사용해야한다. 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후에 사용해야한다.
옵션 | 설명 |
---|---|
create | 기존 테이블을 삭제하고 새로 생성한다. DROP + CREATE |
create-drop | create 속성에 추가로 애플리케이션을 종료할 때 생성한 DDL을 제거한다. DROP + CREATE + DROP |
update | 데이터베이스 테이블과 엔티티 매핑정보를 비교해서 변경 사항만 수정한다. |
validate | 데이터베이스 테이블과 엔티티 매핑정보를 비교해서 차이가 있으면 경고를 남기고 애플리케이션을 실행하지 않는다. 이 설정은 DDL을 수정하지 않는다. |
none | 자동 생성 기능을 사용하지 않으려면 hibernate.hbm2ddl.auto 속성 자체를 삭제하거나 유효하지 않은 옵션 값을 주면 된다(참고로 none은 유효하지 않은 옵션 값) |
운영 장비에는 절대 create, create-drop, update를 사용X
이 옵션들은 운영 중인 데이터베이스의 테이블이나 컬럼을 삭제할 수 있기 때문
개발 초기 단계는 create 또는 update
테스트 서버는 update 또는 validate
스테이징과 운영 서버는 validate 또는 none