JPA에서 상속 관계 매핑은 어떻게 하나요?
관계형 DB 에서는 상속이라는 개념이 없기 때문에 이를 비슷하게 구현하기 위해서 여러 기능들을 제공한다.
@Inheritance
부모 클래스에 적용하여 상속관계를 명시한다.
주로 사용하는 전략은 조인 전략이나 싱글 테이블 전략이다.
조인 전략이 제일 합리적이지만, 테이블이 간단하면 싱글 테이블 전략을 사용한다.
@MappedSuperClass
부모 클래스는 테이블과 매핑하지 않고 자식 클래스에 매핑 정보만 제공할 때 사용한다.
공통되는 속성을 뽑아서 만들 때 유용하고, 주로
BaseEntity시간 정보로 사용한다.
임베디드 타입
기본 값 타입을 모아서 객체지향적으로 재사용성 있고, 응집력 높은 테이블 설계를 할 수 있다.
정의하는 곳에
@Embeddable, 사용하는 곳에@Embedded를 사용한다.임베디드 타입은 소유한 엔티티 생명주기에 의존한다.
임베디드 타입은 불변 객체로 설계하는 것과 동등성 비교를 위해
equals()와hashCode()를 구현하는 것이 중요하다.
Last updated