@MappedSuperclass
공통 매핑 정보가 필요할 때 사용한다.
주로 사용하는 컬럼인 id, name, 작성일, 등록자 등의 정보를 담은 공통으로 사용하는 정보를 모아서 작성하여야하는 코드를 줄여준다.
특징
- 상속관계 매핑X
- 엔티티X, 테이블과 매핑X
- 부모 클래스를 상속 받는 자식클래스에 매핑 정보만 제공
- 조회, 검색 불가(
em.find(BaseEntity)
불가) - 직접 생성해서 사용할 일이 없으므로 추상 클래스를 권장
구현 코드
@MappedSuperclass
@Getter
@Setter
public abstract class BaseEntity {
private String createBy;
private LocalDateTime createDate;
private String lastModifiedBy;
private LocalDateTime lastModifiedDate;
}
@MappedSuperClass를 사용해여 매핑 정보 상속을 할 수 있게 지정하여주고
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
public class Item extends BaseEntity{
@GeneratedValue
@Id
private Long id;
private String name;
private int price;
}
다른 엔티티에서 이를 사용하기 위해서는 해당 클래스를 상속받으면 된다.
참고
해당 글은 김영한님의 자바 ORM 표준 JPA를 공부하며 작성한 글입니다.
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
반응형