[JPA] JPA - 조인 전략을 사용한 상속 매핑

ichubtou·2024년 1월 18일
0

JPA - 조인 전략을 사용한 상속 매핑


  • 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없음
  • 그러나 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 유사
  • 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것
  • 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현할 때 3가지 방법을 선택
    • 각각의 테이블로 변환
    • 통합 테이블로 변환
    • 서브타입 테이블로 변환
  • 조인 전략은 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래키로 사용하는 전략
  • 특징
    • 조회할때 조인을 자주 사용
    • 객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없음
    • 타입을 구분하는 컬럼 추가

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "dtype")
public class Vehicle {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String manufacturer;

}

@Entity
@DiscriminatorValue("CAR")
public class Car extends Vehicle {

    private int numberOfSeats;

}

@Entity
@DiscriminatorValue("BOAT")
public class Boat extends Vehicle {

    private double length;

}

@Entity
@DiscriminatorValue("BICYCLE")
public class Bicycle extends Vehicle {

    private boolean hasBasket;

}

0개의 댓글