@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로 지정한 클래스만 상속 가능
'Spring > JPA' 카테고리의 다른 글
JPA 프로젝트 생성 (0) | 2023.02.18 |
---|---|
프록시와 연관관계 관리 - 영속성 전이(CASCADE)와 고아 객체 (0) | 2023.02.10 |
프록시와 연관관계 관리 - 즉시 로딩과 지연 로딩 (0) | 2023.02.10 |
프록시와 연관관계 관리 - 프록시 (0) | 2023.02.09 |
고급 매핑 - 상속관계 매핑 (0) | 2023.02.08 |