728x90
📌 @MappedSuperclass
@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{
// id 상속
// name 상속
private String shopName;
}
- BaseEntity 는 테이블과 매핑되지 않고 단순히 매핑 정보만 자식 클래스에게 제공한다
- 공통된 속성을 부모클래스에 작성 후 @MappedSuperclass 어노테이션을 사용해 정의할 수 있다
- 조회, 검색 불가능하다
- 추상클래스로 생성 권장
그렇다면 재정의는 어떻게 할까?
1) @AttributeOverride / @AttributeOverrides
@AttributeOverride()
@AttributeOverrides({@AttributeOverride(),@AttributeOverride()})
상속받은 매핑 정보를 재정의
@Entity
@AttributeOverride(name = "id", column = @Column(name = "MEMBER_ID"))
public class Member extends BaseEntity{
}
- 상속받은 id를 MEMBER_ID로 재정의
2) @AssociationOverride/ @AssociationOverrides
@AssociationOverride()
@AssociationOverride(name="부모 컬럼명", joinColumns=@JoinColumn(name="재정의할 컬럼명"))
상속받은 연관관계를 재정의
@MappedSuperclass
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String city;
}
@Entity
@AssociationOverride(name = "address", joinColumns = @JoinColumn(name = "EMPLOYEE_ADDRESS_ID"))
public class Employee extends Person {
@OneToOne
@JoinColumn(name = "EMPLOYEE_ADDRESS_ID")
private Address employeeAddress;
}
- Person 클래스에서 상속한 address 관계를 재정의
- EMPLOYEE_ADDRESS_ID라는 이름의 새로운 조인 컬럼 사용
<관련 이전 포스팅>
https://31daylee.tistory.com/22
[JPA] 상속관계 매핑 정리- 3가지 전략 JOINED, SINGLE_TABLE 등
들어가기 전 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이란 개념이 없다. 슈퍼타입 서브타입 관계라는 모델링 기법이 상속과 가장 유사하다. ORM에서 말하는 상속 관계 매핑은 객
31daylee.tistory.com
<참고자료>
https://product.kyobobook.co.kr/detail/S000000935744
자바 ORM 표준 JPA 프로그래밍 | 김영한 - 교보문고
자바 ORM 표준 JPA 프로그래밍 | 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA
product.kyobobook.co.kr
728x90
'LANGUAGE > Java' 카테고리의 다른 글
[JPA] 프록시와 즉시/지연 로딩 전략 (0) | 2024.01.22 |
---|---|
[JPA] 상속관계 매핑 정리- 3가지 전략 JOINED, SINGLE_TABLE 등 (0) | 2023.12.31 |
[JPA] 기본적인 매핑 어노테이션 (4) | 2023.12.17 |