상속관계 매핑
- 관계형 데이터베이스는 상속 관계X
- 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사
- 상속관계 매핑
- 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑
- 객체는 상속관계로 가져갈 수 있다.
주요 어노테이션
- @Inheritance(strategy=InheritanceType.XXXX)
- JOINED : 조인 전략
- SINGLE_TABLE : 단일 테이블 전략
- TABLE_PER_CLASS : 구현 클래스마다 테이블 전략
- @DiscriminatorColumn(name="DTYPE")
- 부모 클래스에서 선언
- 이 어노테이션을 안 넣어 줄 경우에 기능상으로 문제는 없다.
- 그러나 DB만 봤을 경우 어떤 테이블(어떤 자식 객체)에서 INSERT가 되었는지 바로 확인할 수가 없다.
- 여러 테이블들과 매핑하여 확인은 가능하다.
- @DiscriminatorValue("XXX")
- 자식 클래스에서 선언
- 보통 회사 규약에 따라서 값을 설정해준다.
슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법
※ 객체 입장에서는 다 똑같다.
1. 조인전략 - 정석 전략
- 장점
- 테이블 정규화
- 외래 키 참조 무결성 제약조건 활용가능
- 저장공간 효율화
- 단점
- 조회시 조인을 많이 사용, 성능 저하
- 조회 쿼리가 복잡함
- 관리차원에서 복잡함
- 데이터 저장시 INSERT SQL 2번 호출
- 단일 테이블 전략에 비해서 성능이 안좋다.
2. 단일 테이블 전략
- 장점
- 조인이 필요 없으므로 일반적으로 조회 성능이 빠름
- 조회 쿼리가 단순함
- 단점
- 자식 엔티티가 매핑한 컬럼은 모두 null 허용
- 단일 테이블에 모든 것을 저장하므로 테이블이 커질 수 있다. 상 황에 따라서 조회 성능이 오히려 느려질 수 있다.
3. 구현 클래스마다 테이블 전략 - 사용하면 안되는 전략
- 이 전략은 데이터베이스 설계자와 ORM 전문가 둘 다 추천X
- 장점
- 서브 타입을 명확하게 구분해서 처리할 때 효과적
- not null 제약조건 사용 가능
- 단점
- 여러 자식 테이블을 함께 조회할 때 성능이 느림( UNION SQL 필요 )
- 자식 테이블을 통합해서 쿼리하기 어려움
출처
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 본 강의는 자바 백엔
www.inflearn.com
'JPA 프로그래밍' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] 실전 예제3 - 다양한 연관관계 매핑( 4/4 ) (0) | 2021.07.18 |
---|---|
[자바 ORM 표준 JPA 프로그래밍] 다양한 연관관계 매핑 - 다대다( 3/4 ) (0) | 2021.07.17 |
[자바 ORM 표준 JPA 프로그래밍] 다양한 연관관계 매핑 - 일대일( 2/4 ) (0) | 2021.07.17 |
[자바 ORM 표준 JPA 프로그래밍] 다양한 연관관계 매핑 - 다대일, 일대다 ( 1/4 ) (0) | 2021.07.14 |
[자바 ORM 표준 JPA 프로그래밍] 실전 예제2 - 연관관계 매핑 시작( 3/3 ) (0) | 2021.07.11 |