software engineering/web

JPA Inheritance Mapping 하나의 테이블을 여러 엔티티로 분리하기

일리홍 2022. 1. 10. 10:59

테이블은 하나지만 특정 type컬럼에 따라 논리적으로는 성격이 나뉘는 경우가 있다.

예를 들자면 우리집 반려동물 테이블에 고양이와 강아지가 함께 들어있는데 강아지만 최근 산책 정보를 갖고 있는 경우이다.

이럴 때, 부모 엔티티를 두고 각 타입별로 자식 엔티티를 만들어 Inheritance Mapping을 지어줄 수 있다.

분류 기준이 되는 컬럼은 Discriminator Column으로 표시해주면 된다.

 

아래 예시는 TYPE이라는 컬럼이 분류 기준인 경우이다. 사용할 TYPE 값 중 하나는 A이다.

<Parent>

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type")

<Child>

@DiscriminatorValue("A")

 

https://www.baeldung.com/hibernate-inheritance

https://browndwarf.tistory.com/54

 

Entity Inheritance in Hibernate - (2) Single-Table 상속 전략

Overview Single-Table 상속 전략은 상속 관계에 있는 Entity를 모두 묶어서 하나의 Table로 만드는 방식이다. 이전에 사용한 예제를 Single-Table 상속전략을 사용했을 경우를 개념적으로 도식화 하면 과 같

browndwarf.tistory.com