Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Transaction Pattern
- Serial GC
- The law of Demeter
- Parallel Old GC
- Action Pattern
- Resilinece4j
- 체인 패턴
- Spring Boot Actuator
- Java
- 생산자 소비자 패턴
- Spring Cloud Netfilx Eureka
- 디자인 패턴
- MSA
- 배치
- 키클락
- 타입스크립트
- 스프링 배치
- java 정렬
- 알고리즘
- thread
- spring cloud
- 멀티스레드
- 스레드
- 사가 패턴
- TypeScript
- zipkin
- saga pattern
- 디자인패턴
- JPA
- spring batch
Archives
- Today
- Total
PSD( Private-Self-Development )
JPA 의 상속 본문
JPA의 상속 관계 매핑 에는 두 가지 경우가 있다.
- DB의 테이블간 관계가 상속인 경우
- 엔티티 간의 공통 요소를 따로 빼서 상속해 줘야 하는 경우
각각의 방식에 따라 상속 대상 클래스를 생성 후
해당 클래스를 피상속 클래스들이 extends 받으면 상속이 성립된다.
1. DB의 테이블간 관계가 상속인 경우
이 경우, 상속하려는 엔티티에 아래 3가지 어노테이션을 부여한다.
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "Dtype")
public abstract class Item{
}
@Inheritance()
strategy 속성 값에 따라서 상속 관계를 맵핑하는 방식이 달라진다.
InheritanceType.SINGLE_TABLE | 상속 관계를 하나의 테이블로 운영 | 추후 추가 요소가 없거나 상속 구조가 단순할 경우 사용하면 좋다. |
InheritanceType.TABLE_PER_CLASS | 상속 관계를 연관이 없는 각각의 테이블로 운영 | 조회 시 의 단점이 크기 때문에 사용하지 않는다. |
InheritanceType.JOINED | 상속 관계를 여러 테이블 간의 연관관계로 운영 | 상속 구조가 복잡하거나 추후 추가될 요소가 있는 경우 사용하면 좋다. |
@DiscriminatorColumn()
속성 값에 따라 각 상속 대상 테이블을 구분할 구분자 컬럼을 설정한다.
name | 구분자 컬럼 명 설정 |
length | 구분자 컬럼 길이 설정 |
discriminatorType | 구분자 컬럼의 형식 설정 DiscriminatorType.STRING : 테이블 명 을 구분자로 DiscriminatorType.CHAR : 테이블 명 앞글자를 구분자로 DiscriminatorType.INTEGER : 숫자를 구분자로 |
columnDefinition | 기본값 설정과 같이 다른 설정 값을 문자열 형태로 설정 |
2. 엔티티 간의 공통 요소를 따로 빼서 상속해 줘야 하는 경우
@MappedSuperclass
public class BaseEntity {
}
해당 클래스는 Entitiy 가 아니다!
참조 : https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
'Backend > JPA' 카테고리의 다른 글
JPA 값 타입 (0) | 2022.10.14 |
---|---|
JPA 의 프록시, 지연 로딩, 즉시 로딩 (0) | 2022.10.12 |
JPA의 DB 매핑 (0) | 2022.10.06 |
JPA의 영속성 컨텍스트 (0) | 2022.10.06 |
JPA 사용 설정 및 사용 (0) | 2022.10.05 |