JPA 엔티티 매핑

Ada·2022년 10월 20일
0

항해TOL

목록 보기
37/63

객체와 테이블 매핑

@Entity

  • JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다.

  • @Entity가 붙은 클래스는 JPA가 관리하고, 엔티티라 부른다.

  • @Entity 적용 시 주의사항

    • 기본 생성자가 필수(파라미터가 없는 public 또는 protected 생성자)
    • final 클래스, enum, interface, inner 클래스에는 사용 불가
    • 저장할 필드에 final 사용 불가

@Table

@Table은 엔티티와 매핑할 테이블을 지정한다. 생략하면 매핑한 엔티티 이름을 테이블 이름으로 사용한다.

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

JPA는 데이터베이스 스키마를 자동으로 생성하는 기능을 지원한다. (애플리케이션 실행 시점에 자동 생성)

JPA는 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL을 생성한다.

하지만 이렇게 생성된 DDL은 개발 장비에서만 사용해야한다. 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후에 사용해야한다.

hibernate.hbm2ddl.auto 속성

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

주의사항

운영 장비에는 절대 create, create-drop, update를 사용X

이 옵션들은 운영 중인 데이터베이스의 테이블이나 컬럼을 삭제할 수 있기 때문

개발 초기 단계는 create 또는 update

테스트 서버는 update 또는 validate

스테이징과 운영 서버는 validate 또는 none

profile
백엔드 프로그래머

0개의 댓글