![[자바 ORM 표준 JPA 프로그래밍 - 기본편] 7. 고급 매핑](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9j9R8%2FbtsC6pOgWTh%2F4FVIZ8Tw208WTCO4ShO9t1%2Fimg.png)
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 7. 고급 매핑Backend/JPA2024. 1. 4. 17:31
Table of Contents
인프런 김영한 강사님의 [자바 ORM 표준 JPA 프로그래밍 - 기본편] 을 수강하고 정리한 글입니다.
자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 - 인프런
현업에서 실제로 JPA로 개발을 하고 있습니다. 그런 입장에서보면 지금 작성하고 있는 코드들이 어떻게 작동하는지 이해하는데 큰 도움을 주는 강의입니다. 다음은 제가 느낀 이 강의의 장점들
www.inflearn.com
📌 상속관계 매핑
✅ 상속관계 매핑
관계형 데이터베이스는 상속 관계라는 것이 없다.
대신 슈퍼 타입, 서브 타입 관계라는 모델링 기법이 있는데 이것이 객체의 상속 개념과 유사하다고 볼 수 있다.
상속 관계를 매핑한다는 것은 결국 객체의 상속 구조와 슈퍼타입 서브타입 관계를 매핑하는 것이다.
✅ 주요 어노테이션
- @Inheritance(strategy=InheritanceType.XXX)
- JOINED : 조인 전략
- SINGLE_TABLE : 단일 테이블 전략
- TABLE_PER_CLASS : 구현 클래스마다 테이블 전략
- @DiscriminatorColumn(name="DTYPE")
- DTYPE 생성
- 관례적으로 부모 테이블에 있는 것이 좋다.
- @DiscriminatorValue("XXX")
- 자식 테이블에 존재한다.
위의 두 Discriminator들은 싱글 테이블 전략에서는 반드시 있어야 한다. (다른 전략에서도 사용하는 것을 추천한다.)
✅ 조인 전략
장점
- 테이블 정규화
- 외래 키 참조 무결성 제약 조건을 활용할 수 있다.
- 저장 공간이 효율적이다.
단점
- 조회 시 조인이 많이 사용되기 때문에 성능이 저하된다.
- 조회 쿼리가 복잡해진다.
- 데이터를 저장할 때 Insert 쿼리가 두 번 호출된다.
✅ 단일 테이블 전략
장점
- 조회 성능이 빠르다.
- 조회 쿼리가 단순하다.
단점
- 자식 엔티티가 매핑한 컬럼은 null을 허용해야 한다.
- 테이블의 규모가 과도하게 커질 수 있다.
✅ 구현 클래스마다 테이블 전략
비추천
📌 MappedSuperclass : 매핑 정보 상속
✅ @MappingSuperclass
공통 매핑 정보가 필요할 때 사용한다.
상속 관계, 엔티티, 테이블과의 매핑이 아니다.
부모 클래스를 상속 받는 자식 클래스의 매핑 정보만 제공받는다.
조회나 검색이 불가능하다. (em.find())
직접 생성해서 사용할 일이 없기 때문에 추상 클래스를 권장한다.
주로 등록일, 등록자, 수정일, 수정자와 같이 전체 엔티티에서 공통적으로 적용하는 정보를 모을 때 사용한다.
'Backend > JPA' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 9. 값 타입 (0) | 2024.01.05 |
---|---|
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 8. 프록시와 연관관계 관리 (0) | 2024.01.05 |
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 6. 다양한 연관관계 매핑 (0) | 2024.01.04 |
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 5. 연관관계 매핑 기초 (0) | 2024.01.04 |
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 4. 엔티티 매핑 (0) | 2024.01.04 |
@Seyun. :: 개발할 결심
개발자가 되고 싶어요.