Spring/JPA

고급 매핑 - Mapped Superclass - 매핑 정보 상속

Ynghan 2023. 2. 9. 17:11

@MappedSuperclass

모든 객체에 공통된 속성을 추가해야 한다고 했을 경우 공통된 속성을 상속으로 받아서 사용할 수 있도록 만들어 준다.
상속관계 매핑과 다르다. 상속관계 매핑은 공통된 속성을 부모 객체에 포함시키는 것이다.

코드

공통된 속성을 넣는 엔티티 생성
package hellojpa;

import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;

@MappedSuperclass
public class BaseEntity {
    private String createBy;
    private LocalDateTime createdDate;
    private String lastModifiedBy;
    private LocalDateTime lastModifiedDate;

   ...
}

 

 

 

공통된 속성을 적용할 엔티티에 extends BaseEntity
public class Member extends BaseEntity
public class Team extends BaseEntity

@MappedSuperclass

상속관계 매핑이 아니다.

엔티티 x, 테이블과 매핑 x

부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공

 조회, 검색 불가

( em.find(BaseEntity)불가 )

직접 생성해서 사용할 일이 없으므로 추상 클래스 권장

( public abstract class BaseEntity )


테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할

주로 등록일, 수정일, 등록자, 수정자 같은 전체 엔티티에서 공통으로 적용하는 정보를 모을 때 사용

참고 : @Entity 클래스는 엔티티나 @MappedSuperclass로 지정한 클래스만 상속 가능