ABAP DUMP ERROR 24시

@Inheritance(strategy = Inheritance.Type.JOINED) 전략 본문

[WEB]Back-end/JPA

@Inheritance(strategy = Inheritance.Type.JOINED) 전략

이운형 2022. 1. 8. 12:52
반응형

1. @Inheritance(strategy = Inheritance.Type.JOINED) 전략

2. @Inheritance(strategy = Inheritance.Type.SINGLE_TABLE) 전략

 

 

1. JOINED 전략

 

Item
Item_id(pk)
name
price
Dtype
Album Movie Book
Item_id(pk,fk)
Artist
Item_id(pk,fk)
director
actor
Item_id(pk,fk)
author
isbn
package jpabook.jpashop.inheritance;

import javax.persistence.*;

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn
public class Item {

    @Id@GeneratedValue
    private Long id;
    private String name;
    private int price;

}

<Item>

package jpabook.jpashop.inheritance;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

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

    private String artist;

}

<Album>

extends 를 통해 부모 클래스를 상송 받으면 부모의 pk를 ,  자식은 pk ,fk로 상속받아 쓸수있다.

 

-Q. Dtype은 뭐야?

A.  Dtype은 부모입장에서 조회해봤을때 어떤 자식에게서 data가 들어왔는지 확인이 가능하다!

 

사용방법

부모 타입에 @DiscriminatorColumn() 어노테이션을 넣고

자식타입에  @Discriminatorvalue를 사용하면

부모 조회시 어떤 자식에서 왔는지 확인이 가능하다.

 

@Disciminatorvalue("A") => 라고 쓰면 Item 조회시 Dtype에 Album은 A라고 나온다.

 

Q. joined 전략의 장단점

 

 

반응형
Comments