🏷 DTYPE

정의

DTYPEJPA 상속 매핑에서 어떤 자식 엔티티인지 구분하기 위해 사용하는 디스크리미네이터 컬럼이다. 주로 SINGLE_TABLE 전략에서 사용되며, 한 테이블에 저장된 여러 엔티티의 타입을 식별한다.

DTYPE 값은 부모 엔티티와 자식 엔티티를 구분하는 데 사용된다.

🧩 역할

  • 상속 테이블에서 엔티티 타입을 구분한다
  • SINGLE_TABLE 전략에서 자주 사용된다
  • 자식 엔티티를 문자열 또는 별도 값으로 식별할 수 있게 한다
  • 조회 시 어떤 타입으로 매핑할지 결정하는 기준이 된다

🛠 사용법

부모 엔티티에 구분 컬럼 지정

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "DTYPE")
public abstract class Item {

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

자식 엔티티에 구분 값 지정

@Entity
@DiscriminatorValue("SWORD")
public class Sword extends Item {
}

@Entity
@DiscriminatorValue("AXE")
public class Axe extends Item {
}

🧩 다른 상속 전략과의 관계

SINGLE_TABLE

  • DTYPE을 주로 사용한다
  • 하나의 테이블에 여러 엔티티가 함께 저장된다

JOINED

  • 보통 DTYPE이 필수는 아니다
  • 부모와 자식 테이블을 조인해서 조회한다

TABLE_PER_CLASS

  • 보통 DTYPE이 필수는 아니다
  • 각 엔티티가 별도 테이블을 가진다

⚠️ 주의사항

  • DTYPE은 개념적으로는 디스크리미네이터 컬럼을 뜻한다.
  • 실제 컬럼명은 @DiscriminatorColumn으로 제어한다.
  • SINGLE_TABLE에서 가장 자주 사용된다.
  • 상속 전략을 바꾸면 DTYPE의 필요 여부도 달라질 수 있다.

📌 정리

  • DTYPE은 JPA 상속 구조에서 엔티티 타입을 구분하는 컬럼이다.
  • 주로 SINGLE_TABLE 전략에서 사용한다.
  • @DiscriminatorColumn, @DiscriminatorValue와 함께 이해하면 쉽다.

연결문서

태그: ,

카테고리:

업데이트:

댓글남기기