관계형 데이터베이스에는 객체의 상속 관계가 존재하지 않는다. 다만 슈퍼타입과 서브타입 관계라는 모델링 기법이 객체 상속과 유사한데, 객체의 상속구조와 DB의 슈퍼타입 서브타입 관계를 매핑해서 해결 가능하다.
슈퍼타입 서브타입 논리모델을 실제 물리모델로 구현하는 방법 3가지
@Inheritance(strategy = InheritanceType.XXX)
@DiscriminatorColumn(name = "DTYPE)
@DiscriminatorValue("XXX")
위 두 전략이 DB 설계자와 ORM 전문가 둘 중 하나에 편향적이었다면 이 전략은 양쪽다에게 추천되지 않는다
공통된 매핑정보가 필요할 때 사용한다
상속관계 매핑이 아니며, 엔티티도 테이블과 매핑되는 것도 아니다. 부모 클래스를 상속받는 자식 클래스에 매핑 정보만 제공하는 클래스이며, 조회와 검색이 불가능하다(em.find(BaseEntity) 불가). 직접 생성해서 사용할 일이 업으므로 추상 클래스로 구현하는것이 권장된다. 테이블과 관계없이 단순히 엔티티가 공통으로 사용하는 매핑정보를 모으는 역할이며, 주로 등록일, 수정일, 등록자, 수정자 가타은전체 엔티티에서 공통적으로 적용하는 정보를 모을 때 사용한다.
@Entity 클래스는 엔티티나 @MappedSuperclass로 지정한 클래스만 상속가능하다.
출처 : https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
(자바 ORM 표준 JPA 프로그래밍 - 기본편)