@Inheritance
JPA 를 사용하여 Entity를 정의할 때 상속구조를 사용하기 위해 선언한다.
ex)
@Entity
@Inheritance(strategy = InheritanceType.SINGLE\_TABLE)
@DiscriminatorColumn(name = "DTYPE")
public abstract class Item {
@GeneratedValue
private long id;
......
}
@Entity
@DiscriminatorValue("B")
public class Book extends Item {
private String author;
.....
}
- @Inheritance annotation 으로 상속하여 사용하는 부모 객체임을 선언한다.
- InheritanceType 종류
- JOINED : 부모인 Item테이블이 존재하고, 자식 테이블인 Book 테이블이 별도로 존재하여 key값으로 조인되는 전략이다.
- SINGLE_TABLE : 하나의 테이블에 부모컬럼과 자식 컬럼을 모두 넣고, DiscriminatorValue에 지정한 값에 따라 테이블에서 필요한 정보만 가지고 와서 엔티티를 생성한다.
- TABLE_PER_CLASS : 부모클래스의 id와 같은 값들을 자식들도 가지고 있는 전략이다. 대부분 사용하지 않음.
'JAVA' 카테고리의 다른 글
JPA 지연로딩 (0) | 2021.04.28 |
---|---|
JPA @ManyToMany (0) | 2021.04.23 |
JPA CASCADE 종류 (0) | 2021.04.22 |
JAVA Optional 기초 (0) | 2021.03.19 |
자바에서 제공하는 함수형 인터페이스 (0) | 2021.03.18 |