JPA

@MappedSuperclass

쭈녁 2022. 12. 20. 21:55

객체의 공통된 속성이 존재할 때, 해당 속성을 BaseEntity로 설정하여 같은 속성을 컬럼값으로 지정할 수 있다.

@MappedSuperclass

BaseEntity

@MappedSuperclass
public abstract class BaseEntity {
    private Long id;
    private String name;

 

위와 같이 @MappedSuperClass로 공통속성을 지정하여 Member와 Seller 객체의 인스턴스처럼 ,DB의 컬럼처럼 사용 할 수 있다.

 

Member 엔티티

@Entity
public class Member extends BaseEntity {
    @Id
    @GeneratedValue
    private Long id;
    
    ......

해당 속성값을 상속받을 엔티티에서는 extends 로 상속받아 사용한다.

 

  • 상속관계 매핑이 아닌 동일한 속성값을 상속 받는다.
  • 엔티티가 아니다, 테이블과 매핑되지 않는다
  • 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공
  • 조회, 검색 불가(em.find(BaseEntity) 불가)
  • 직접 생성해서 사용할 일이 없으므로 추상 클래스 권장

'JPA' 카테고리의 다른 글

값 타입 정리  (0) 2022.12.21
프록시와 연관관계 (즉시로딩/지연로딩)  (0) 2022.12.21
상속관계 매핑  (0) 2022.12.20
연관관계 매핑  (0) 2022.12.20
연관관계 매핑 기초  (0) 2022.12.19