@MappedSuperclass

0

TIL

목록 보기
117/126

@MappedSuperclass : Entity에서 공통의 매핑 정보가 필요할 때 사용(ex : 등록일, 수정일, 등록자, 수정자)

  • 상속관계 매핑이 아님
  • Entity가 아니므로 테이블과 매핑되지 않음
  • 상속 받는 자식 클래스에 매핑 정보만 제공
  • em.find(BaseEntity)와 같은 조회, 검색이 불가능
  • 직접 생성해서 사용할 일이 없으므로 추상 클래스로 사용 권장
@MappedSuperclass
public abstract class BaseEntity {
    private String createdBy;
    private LocalDateTime createdDate;
    private String lastModifiedBy;
    private LocalDateTime lastModifiedDate;
}
@Entity
public class Member extends BaseEntity{
    @Id
    @GeneratedValue
    @Column(name = "MEMBER_ID")
    private Long id;
    
    // ...
}
@Entity
public class Team extends BaseEntity{
    @Id
    @GeneratedValue
    @Column(name = "TEAM_ID")
    private Long id;
    
    // ...
}

MemberTeam에 공통으로 필요한 Column을 MappedSuperclass로 관리

0개의 댓글