Spring JPA
[Spring JPA] @MappedSuperclass
hoondev3
2023. 1. 31. 16:56
@MappedSuperclass
공통 매핑 정보가 필요할 때 사용한다.
실제 테이블과 매핑되지 않는다.
@MappedSuperclass
public abstract class BaseEntity {
@Id @GeneratedValue
private Long id;
private String name;
...
}
@Entity
public class Member extends BaseEntity {
private String email;
}
@Entity
public class Seller extends BaseEntity {
private String shopName;
}
이렇게 하면 테이블에 BaseEntity의 id, name을 상속 받게 된다.
BaseEntity는 엔티티가 아니고 테이블과 매핑되지도 않는다.
조회, 검색도 불가하다. 직접 생성할일이 없으므로 보통 추상클래스로 만든다.
@MappedSuperclasss는 테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할을 한다.
주로 등록일, 수정일, 등록자, 수정자 같은 전체 엔티티에서 공통 으로 적용하는 정보를 모을 때 사용 (@Entity 클래스는 엔티티나 @MappedSuperclass로 지 정한 클래스만 상속 가능)