티스토리 뷰
자바에만 상속의 개념이 있고, RDBMS에는 상속의 개념이 없다.
이를 해결하기 위해 3가지 방법이 있다.
1.joined
2.singletable
3.tableperclass (거의 사용안함)
@Inheritance(strategy = InheritanceType.JOINED)
joined가 디폴트,
joined에서
부모엔티티에서
@DiscriminatorColumn(name = "") // Dtype이 default
자식엔티티에서
@DiscriminatorValue("") // 컬럼에서 나타낼 값을 쓰면 된다.
부모엔티티에서
@Inheritance(strategy = InheritanceType.JOINED) 추가
abstract 붙이기
상속관계에서는 @Entity를 붙여주어야 한다.
Employee만 따로 조회하지 않기 때문에 추상클래스로 해야한다.
abstract : 일반클래스와 똑같이 쓸 수 있는데, 추상화가 되어 있으니까 direct로 쓰는 게 아니다,
필드를 자식에게만 주는 용도이다. 직접 접근하지 말고 자식을 통해서 접근해라는 의미.
자식으로만 접근하려면 abstract를 붙여서 접근하면 된다.
Employee에서 접근하려면 abstract를 붙이면 안된다.
----------------------------------------------------
세터조인(막조인)
쿼리문에서 join 키워드를 쓰지 않고 from으로 조인한 경우,
전혀 연관없는 애들끼리 조인할 때 세터조인을 쓴다.
정확하게 상속을 했기 때문에 관계가 맺어져야 한다.
'2022 > jpa' 카테고리의 다른 글
day04[Auditing(어디팅)] (0) | 2022.11.30 |
---|---|
day04[임베디드, 맵드슈퍼클래스] (0) | 2022.11.30 |
day03[JPA new project] (0) | 2022.11.30 |
day03[벌크 연산, Repository, 쿼리메소드] (0) | 2022.11.30 |
day02[순수jpa, entity] (0) | 2022.11.15 |