Search
〰️

@MappedSuperclass

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
복사