MappedSuperclass
•
공통 매핑 정보가 필요할 때 사용 (id, name)
•
귀찮아서,,,,ㅎ
•
상속관계 매핑이 아님
•
엔티티도 아님. 테이블과 매핑이 되지 않는다.
•
조회, 검색 불가능 (em.find(BaseEntity))
•
직접 생성해서 사용할 일이 없으므로, 추상클래스를 권장한다.
•
요구조건 : createDate, lastModifiedBy, lastModifiedDate ..등등
private String createBy;
private LocalDateTime createDate;
private String lastModifiedBy;
Java
복사
→ 이럴 때 해결 할 수 있는 것이 MappedSuperclass
•
공통으로 사용할 객체에 extends
•
테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할
•
주로 등록일, 수정일, 등록자, 수정자 같은 전체 엔티티에서 공통으로 적용하는 정보를 모을 때 사용
◦
참고: @Entity 클래스는 Entity나 @MappedSuperclass만 상속 가능
활용
•
MappedSuperClass에 대한 강의를 들은 지 얼마안되어서, 과제 수행시 바로 적용해보았다 
•
Document, DocumentApproval 등 문서의 수정, 삭제, 등록 시간을 기록하는데 사용했다!
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseTime {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
}
Java
복사