7. 고급 매핑

HotFried·2023년 10월 2일
0

상속관계 매핑

  • 객체의 상속 구조와 DB의 슈퍼 타입, 서브 타입 관계를 매핑하는 것

  • 관계형 DB는 상속관계 X
    -> 객체의 상속과 DB의 슈퍼타입 서브타입 관계를 매핑한다.


슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법

  • 각각 테이블로 변환 -> 조인 전략
  • 통합 테이블로 변환 -> 단일 테이블 전략
  • 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략

주요 어노테이션

@Inheritance(strategy=InheritanceType.XXX)

  • JOINED : 조인 전략
  • SINGLE-TABLE : 단일 테이블 전략, 별도의 설정이 없다면 JPA의 기본 전략
  • TABLE-PER-CLASS : 구현 클래스마다 테이블 전략

@DiscriminatorColumn(name="DTYPE")

  • DTYPE이 추가된다.
  • DTYPE이 없으면 어떤 객체가 생성된지 알 수 없기 때문에 넣어주도록 한다.
  • @DiscriminatorColumn(name = "XXX") -> DTYPE의 이름을 설정할 수 있다.
  • 단일 테이블 전략에서는 DTYPE이 꼭 필요하기 때문에 @DiscriminatorColumn이 없어도 자동으로 DTYPE을 만든다.

@DiscriminatorValue("XXX")

@Entity
@DiscriminatorValue("A")
public class Album extends Item {

    private String artist;
}

Album객체가 생성될 때 DTYPE이 코드에서 설정한 "A"로 변경된다.


참고 :

김영한. 『자바 ORM 표준 JPA 프로그래밍』. 에이콘, 2015.

자바 ORM 표준 JPA 프로그래밍 - 기본편

profile
꾸준하게

0개의 댓글