Post
KO

상속을 이용하여, 같은 테이블을 각 속성에 맞게 테이블 구성하기

하나의 테이블을 특정 속성마다, 다른 형태로 사용하기 위해서는 상속을 이용한 구조가 좋아보이는 경우.

(is-a) 형태

별도의 table entity를 구성하지 않고, 상속을 받아서 각 성격에 맞게 새로 재구성을 해야 하는 경우에는

@MappedSuperClass를 이용하여 추상 클래스를 정의할 수 있고, 그것을 상속받은 테이블에서 활용할 수 있다.

내가 활용한 방안은 (별로 내키지는 않았지만)

선물 주문 은 주문이다.

일반 주문은 주문이다.

형태로 구성 되는 것으로 팀내 의견이 모아졌고, 그걸 구현할 때, 일반 주문이나 선물 주문에 컬럼은 거의 같을 것이고, 달라지는 부분만 맵핑 테이블을 추가해서 하자고 논의가 되었다.

이럴 때 구성방법은 다음과 같다.

@MappedSuperclass @Getter @Setter public abstract class BaseOrder { //.. } @Table(name = "주문") public class 선물주문 extends BaseOrder { //.. @OneToOne @JoinColumn private 선물추가정보 meta; }

위와 같은 구성으로 상속을 받아 구성을 했고, 달라지는 부분만 별도로 맵핑 관계를 구성하여, 활용 할 수 있도록 수정하였다.

따라서, 해당 타입을 이용해서 동일한 주문 테이블이지만, 서로 다른 특성을 유지할 수 있도록 구성하였다.

관련 문서 : https://www.baeldung.com/hibernate-inheritance

[**Hibernate Inheritance Mapping Baeldung**](https://www.baeldung.com/hibernate-inheritance)

A practical guide to understanding different inheritance mapping strategies with JPA / Hibernate.

This article is licensed under CC BY 4.0 by the author.