JPA Entity Inheritance Mapping 2

출처 : 인프런 김영한님의 강의 “자바 ORM 표준 JPA 프로그래밍 - 기본편” 중 일부


🚫 아래 내용은 주관적인 생각이므로 사실과 다를 수 있습니다.


개요

JPA Entity 매핑에서 상속관계에 대한 내용, 그 두 번째
@MappedSuperclass 애노테이션에 관한 내용

정의

Entity의 부모 클래스에 사용하는 애노테이션으로
상속을 받은 자식 클래스에 부모 클래스의 매핑 정보만 제공
상속관계를 매핑하는것이 아니라 상속 그 자체라
부모 클래스는 테이블과 매핑이 되지 않는다

사용 예시

// 부모 클래스
@MappedSuperclass
public abstract class BaseEntity {
    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;
    ...
}
// 자식 클래스
@Entity
public class Member extends BaseEntity {
    // 부모 필드를 상속받음
    // private LocalDateTime createdAt;
    // private LocalDateTime updatedAt;
    // ...
    private String firstName;
    private String lastName;
    ...
}

주의사항

  • Entity에 사용하는 것이 아님
  • 테이블과 매핑되지 않음
  • 조회, 검색 불가
    • em.find(부모클래스) 불가
  • 직접 생성해서 사용할 일이 없으므로,
    추상 클래스로 정의하는것을 권장

댓글남기기