Hansel
6. JPA와 상속관계 매핑 본문
자바나 객체지향 언어에는 상속관계가 존재한다.
부모가 자식을 물려받아 다양한 메서드와 필드를 사용하고 다형성을 이용해 많은 이점을 누릴 수 있다.
하지만 그 개념을 DB에는 상속관계는 존재하지 않는다. 따라서 그 개념을 유사한 개념인 슈퍼타입과 서브타입으로 매핑시켜줘야 한다.
조인 전략 @Inheritance(strategy = InheritanceType.JOINED)


여기 Item 이라는 엔티티가 있다. 이 엔티티는 책, 앨범 등의 다양한 자식을 가진다.
조인전략은 객체지향의 상속관계와 가장 유사한 방법이며 각 자식마다 테이블을 가지도록 한다.
조인 전략의 장점
- 테이블의 정규화
- 외래키 참조 무결성 조건 활용
- 저장 공간 효율화
조인 전략의 단점
- 조회시 많은 조인이 사용
- 조회 쿼리가 복잡
- 데이터 저장시 insert 쿼리가 한번이 아님
단일 테이블 전략 @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
이 방법은 물리데이터 모델링을 할 때 슈퍼타입 기준 테이블 변환 방법이다.
서브타입을 슈퍼타입에 통합하여 하나의 테이블을 만드는 전략이다.
주로 서브타입에 적은 양의 속성이나 관계를 가진 경우에 적용된다.


단일 테이블 전략의 장점
- 조인이 필요 없다. => 성능이 좋다.
- 조회 쿼리가 단순하다.
단일 테이블 전략의 단점
- 자식 엔티티가 매핑한 컬럼은 모두 null을 허용한다.
- 테이블이 너무 커질수도 있다.
'JPA > 기초' 카테고리의 다른 글
| 11. JPA와 값타입 (0) | 2022.02.15 |
|---|---|
| 10. JPA와 영속성 전이 (0) | 2022.02.10 |
| 9. JPA와 즉시 로딩 & 지연 로딩 (0) | 2022.02.10 |
| 8. JPA와 프록시 (0) | 2022.02.10 |
| 7. JPA와 MappedSuperclass (0) | 2022.02.09 |