엔티티를 살펴보면 상당히 공통적인 필드들이 많다.
언제 생성되었는지 언제 수정되었는지 등등 ...
이러한 필드들을 공통적으로 관리할 수 없을까 ?? 해서 나온것이 @MappedSuperClass다.
@MappedSuperClass 는 단순히 매핑정보만 제공할 뿐이며 그이상 그이하도 아니다.
따라서 abstract로 추상클래스로 선언하는 경우가 많다.
보통의 엔티티에서는 @MappedSuperClass를 상속받아서 쓰면된다.
그렇다고 상속관계의 매핑이 전혀 아니다. 헷갈리면 안된다.
예)
@MappedSuperClass
abstract class 시간찍기{
업데이트시간,
생성시간,
}
class 객체 extends 시간찍기{
이름;
나이;
.....
}
위처럼 생성했을 때, 데이터베이스에서 보면
객체에는 업데이트시간과 생성시간이 필드로 나와있는 것을 볼 수 있다.
'JPA' 카테고리의 다른 글
[JPA] 프록시 (Proxy) 객체 & fetch = EAGER & LAZY (0) | 2020.08.06 |
---|---|
[JPA] @Inheritance , @DiscriminatorValue, @DiscriminatorColumn 전략 (0) | 2020.08.06 |
[JPA] @ManyToOne , @OneToMany, @JoinColumn (0) | 2020.08.06 |
[JPA] @Id, @GenerateValue 의 전략 (0) | 2020.08.06 |
[JPA] 엔티티 업데이트 (0) | 2020.08.06 |
댓글