Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- SpringBoot
- wappalyzer
- Postman
- springMVC
- minikube
- pagination
- MYSQL에러
- NullPointerException
- gradle
- appleM1
- restful api
- 우분투에war배포
- VUE
- spring
- SQL
- String
- offset
- MySQL시작하기
- intellij
- DB생성
- 스프링에러
- K8S
- frontend
- CloutNative
- Seek_Keyset
- MySQL
- windows10
- 이클립스
- Lombok
- Java
Archives
- Today
- Total
미운 오리 새끼의 우아한 개발자되기
[JPA] 고급 매핑 (2) @MappedSuperclass 본문
(1) 상속관계 매핑은 부모 클래스와 자식 클래스를 모두 DB 테이블과 매핑한 것.
부모 클래스는 테이블과 매핑하지 않고 부모 클래스를 상속받는 자식 클래스에게 매핑 정보만 제공하고 싶으면 @MappedSuperclass 를 사용하면 됨. 실제 DB 테이블과 매핑되는 @Entity 와는 다르게 @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 에 정의함.
자식 엔티티는 상속을 통해 BaseEntity 의 매핑 정보를 물려받음.
만약 부모로 부터 물려받은 매핑 정보를 재정의하려면 @AttributeOverrides 나 @AttributeOverride 를 사용하고 ,
연관관계를 재정의하려면 @AssociationOverrides 나 @AssociationOverride 를 사용.
아래 코드는 부모에게 상속받은 id 속성의 컬럼명을 MEMBER_ID 로 재정의 한 예시코드.
둘 이상을 재정의하려면 @AttributeOverrides 를 사용.
@Entity
@AttributeOverride(name = "id", column = @Column(name = "MEMBER_ID"))
public class Member extends BaseEntity { ... }
@MappedSuperclass 의 특징
- 테이블과 매핑되지 않고 자식 클래스에 엔티티의 매핑 정보를 상속하기 위해 사용
- MappedSuperclass 로 지정한 클래스는 엔티티가 아니므로 em.find() 나 JPQL 에서 사용불가
- 이 클래스를 직접 생성해서 사용할 일을 거의 없으므로 추상 클래스로 만드는 것을 권장함
-> @MappedSuperclass 는 테이블과는 관계가 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모아주는 역할을 할 뿐.
이를 이용하여 등록일자, 등록자, 수정일자, 수정자 등 여러 엔티티에서 공통으로 사용하는 속성을 효과적으로 관리할 수 있음.
Reference : 자바 ORM 표준 JPA 프로그래밍 (김영한 저)
'Spring & Spring Boot' 카테고리의 다른 글
[JPA] 영속성 관리 (1) 엔티티 매니저 팩토리와 엔티티 매니저 (0) | 2023.05.23 |
---|---|
[JPA] 고급 매핑 (3) 복합 키 (0) | 2023.05.09 |