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로 지 정한 클래스만 상속 가능)

 

Reference

https://www.inflearn.com/course/ORM-JPA-Basic