PSD( Private-Self-Development )

JPA 의 상속 본문

Backend/JPA

JPA 의 상속

chjysm 2022. 10. 11. 14:58

JPA의 상속 관계 매핑 에는 두 가지 경우가 있다.

  1.  DB의 테이블간 관계가 상속인 경우
  2. 엔티티 간의 공통 요소를 따로 빼서 상속해 줘야 하는 경우

각각의 방식에 따라 상속 대상 클래스를 생성 후 

해당 클래스를 피상속 클래스들이 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

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

 

'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