JVM/JPA

@MappedSuperclass

kyoulho 2023. 6. 17. 16:42

부모 클래스는 테이블과 매핑하지 않고 부모 클래스를 상속받는 자식 클래스에게 매핑 정보만 제공하고 싶을 때 사용한다.

등록일자, 수정일자, 등록자, 수정자 같은 여러 엔티티에서 공통으로 사용하는 속성을 효과적으로 관리할 수 있다.

 

테이블

 

엔티티

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

 

부모로부터 물려받은 매핑 정보를 재정의하려면 @AttributeOverrides, @AttrubuteOverride를 사용한다.

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

'JVM > JPA' 카테고리의 다른 글

@JoinTable  (0) 2023.06.19
@MapsId  (0) 2023.06.18
상속 관계 매핑 (슈퍼-서브 타입 모델링)  (0) 2023.06.17
복합키 매핑 @IdClass, @EmbeddedId  (0) 2023.06.16
@ManyToMany  (0) 2023.06.16