엔티티 매핑

  • JPA를 사용하는데 있어서 가장 중요한 일은 엔티티와 테이블을 정확히 매핑하는 것
  • JPA에서 지원하는 4가지 분류의 어노테이션
    • 객체와 테이블 매핑: @Entity, @Table
    • 기본키 매핑: @Id
    • 필드와 컬럼 매핑: @Column
    • 연관관계 매핑: @ManyToOne, @JoinColumn

1. @Entity

  • 테이블과 매핑할 클래스에 대한 필수 어노테이션
  • 기본 생성자가 존재해야함

2. @Table

  • 테이블 이름을 지정

3. 다양항 매핑 사용

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

  • JPA는 스키마를 자동으로 생성하는 기능을 제공
  • hibernate.hbm2ddl.auto, create

5. DDL 생성 기능

6. 기본 키 매핑

IDENTITY

  • 키 생성을 데이터베이스에 위임
  • AUTO_INCREMENT등을 사용한 경우
  • @GeneratedValue(strategy = GenerationType.IDENTITY)

SEQUENCE

  • 시퀀스를 지원하는 데이터베이스에서 사용
@Entity
@SequenceGenerator(
  name = "BOARD_SEQ_GENERATOR",
  sequenceName = "BOARD_SEQ",
  initialValue = 1, allocationSize = 1)
public class Board {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE,
                  generator = "BOARD_SEQ_GENERATOR")
  private Long id;
}

TABLE

  • 키 생성 전용 테이블을 하나 만들고 여기에 해당 키를 업데이트하며 키를 생성
@Entity
@TableGenerator(
  name = "BOARD_SEQ_GENERATOR",
  table = "MY_SEQUENCES",
  pkColumnValuee = "BOARD_SEQ", allocationSize = 1)
public class Board {
  @Id
  @GeneratedValue(strategy = GenerationType.TABLE,
                  generator = "BOARD_SEQ_GENERATOR")
  private Long id;
}

AUTO

  • IDENTITY, SEQUENCE, TABLE중 하나를 자동으로 선택

7. 필드와 컬럼 매핑: 레퍼런스

@Column

@Enumerated

@Temporal

@Lob

@Transient

@Access

8. 정리

References