@MappedSuperclass : 공통 내용 상속하기

상속관계에서 부모도 테이블, 자식도 테이블이었지만 @MappedSuperclass 를 사용하면 부모는 테이블로 등록하지 않고 자식에게 매핑 정보만 제공 할 수 있습니다.

또한 @MappedSuperclass 는 엔티티가 아니고 직접 사용할 일도 없으므로 추상 클래스로 만드는게 좋습니다!

Untitled

재정의 하지 않고 부모의 것 그대로 사용

@MappedSuperclass
public 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;
}

Untitled

부모의 것 재정의

@Entity
@AttributeOverrides({
        @AttributeOverride(name = "id", column = @javax.persistence.Column(name = "MEMBER_ID")),
        @AttributeOverride(name = "name", column = @javax.persistence.Column(name = "MEMBER_NAME"))
})
public class Member extends BaseEntity {
    private String email;
}

@Entity
@AttributeOverrides({
    @AttributeOverride(name = "id", column = @javax.persistence.Column(name = "SELLER_ID")),
    @AttributeOverride(name = "name", column = @javax.persistence.Column(name = "SELLER_NAME"))
})
public class Seller extends BaseEntity {
    private String shopName;
}

Untitled

댓글남기기