JPA

MappedSuperclass

salmon16 2023. 8. 30. 01:05

MappedSuperclass의 사용을 아래의 예시를 통해 알아보자

 

객체의 입장에서 id, name의 필드가 계속 나올 때 BaseEntity에 속성만 두고 상속해서 사용할 때 사용한다

DB는 각각 따로 사용한다. 

이렇게 공통매핑 정보가 필요할 때 사용한다.

다른 예시를 보자 

만약 Team과 Member 클래스의 공통 정보 필드가 아래와 같이 있다고 보자 

private String createdBy;
private LocalDateTime createDate;
private String lastModifiedBy;
private LocalDateTime lastModifiedDate;

공통 정보를 처리하기 위해 BaseEntity라는 클래스를 만들자

@MappedSuperclass
public abstract class BaseEntity {

    private String createdBy;
    private LocalDateTime createDate;
    private String lastModifiedBy;
    private LocalDateTime lastModifiedDate;

 

여기서 MapedSuperclass라는 에노테이션이 필요하다.

BaseEntity는 @Entity는 아니다.

Member, Team 클래스에 BaseEntity를 상속 시켜준다.

public class Team extends BaseEntity{
public class Member extends BaseEntity{

MappedSuperclass

  • 상속관계 매핑이 아니다
  • BeaseEntity는 엔티티가 아니며 테이블과 매핑되지 않는다.
  • 부모 클래스를 상속받는 자식 클래스에 매핑 정보만 제공한다.
  • 조회, 검색이 불가능 하다. (em.find(BaseEntity)불가능)
  • 직접 생성해서 사용할 일이 없으므로 추상클래스를 권장한다.

참고 

Entity 클래스는 엔티티나 MappedSuperclass로 지정된 클래스만 상속이 가능하다.

 

'JPA' 카테고리의 다른 글

즉시 로딩과 지연 로딩  (0) 2023.08.30
프록시와 연관관계 관리  (0) 2023.08.30
상속관계 매핑  (0) 2023.08.29
다양한 연관관계 매핑  (0) 2023.08.29
연관관계 매핑, 단방향, 양방향  (0) 2023.08.28