@MappedSuperclass
부모 클래스는 테이블과 매핑하지 않고 부모클래스를 상속받는 자식 클래스에 매핑 정보만 제공하고 싶을 때 사용
@MappedSuperclass
public abstract class BaseEntity{
@Id @GeneratedValue
private Long id;
private String name;
...
}
@Entity
public class Member extends BaseEntity{
//ID 상속
// NAME 상속
private String email
...
}
@Entity
public class Seller extends BaseEntity{
// 상속
// NAME 상속
private String shopName;
...
}
BaseEntity에는 객체들이 주로 사용하는 공통 매핑정보를 정의했다.
자식 엔티티들은 상속을 통해 BaseEntity의 매핑 정보를 물려받았다.
부모로부터 물려받은 매핑 정보를 재정의하려면 @AttributeOverrids나 @AttributeOveride를 사용하고,
연관관계를 재정의하려면 @AssociationOverrides나 @AssociationOverride를 사용한다.
@Entity
@AttributeOverride(name="id", column= @Colum(name = "MEMBER_ID"))
public class Member extends BaseEntity {...}
@Entity
@AttributeOverrides({
@AttributeOverride (name = "id", column =@Column(name = "MEMBER_ID")),
@AttributeOverride (name = "name", column = @Column( name = "MEMBER_NAME"))
})
public class Member extends BaseEntity{...}
@MappedSuperclass 의 특징
- 테이블과 매핑되지 않고 자식 클래스에 엔티티의 매핑 정보를 상속하기 위해 사용
- @MappedSuperclass로 지정한 클래스는 엔티티가 아니므로 em.find() 나 JPQ에서 사용할 수 없다.
- 이 클래스를 직접 생성해서 사용할 일은 거의 없으므로 추상 클래스로 만드는 것을 권장한다.
'개발 도서 읽기 > 자바 ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
[7장]7.3.3~7.3.5 복합 키: 식별 관계 매핑 / 일대일 식별관계 (0) | 2024.11.19 |
---|---|
[7장]7.3.1~7.3.2 복합 키 : 비식별 관계 매핑 (0) | 2024.11.19 |
[7장] 7.1 상속 관계 매핑 (1) | 2024.11.17 |
[6장] 6.4.3 다대다 : 연결엔티티 사용 / 새로운 키본 키 사용 (0) | 2024.11.16 |
[6장] 6.4 다대다 [N:N] (1) | 2024.11.15 |