JPA에서 상속 관계 매핑은 어떻게 하나요?

  • 관계형 DB 에서는 상속이라는 개념이 없기 때문에 이를 비슷하게 구현하기 위해서 여러 기능들을 제공한다.

  • @Inheritance

    • 부모 클래스에 적용하여 상속관계를 명시한다.

    • 주로 사용하는 전략은 조인 전략이나 싱글 테이블 전략이다.

    • 조인 전략이 제일 합리적이지만, 테이블이 간단하면 싱글 테이블 전략을 사용한다.

  • @MappedSuperClass

    • 부모 클래스는 테이블과 매핑하지 않고 자식 클래스에 매핑 정보만 제공할 때 사용한다.

    • 공통되는 속성을 뽑아서 만들 때 유용하고, 주로 BaseEntity 시간 정보로 사용한다.

  • 임베디드 타입

    • 기본 값 타입을 모아서 객체지향적으로 재사용성 있고, 응집력 높은 테이블 설계를 할 수 있다.

    • 정의하는 곳에 @Embeddable, 사용하는 곳에 @Embedded를 사용한다.

    • 임베디드 타입은 소유한 엔티티 생명주기에 의존한다.

    • 임베디드 타입은 불변 객체로 설계하는 것과 동등성 비교를 위해 equals()hashCode()를 구현하는 것이 중요하다.

Last updated