@MappedSuperclass는 객체의 상속을 통해 사용하지만 상속 관계 맵핑과는 전혀 다른 목적으로 사용한다.
@MappedSuperclass의 목적은 데이터의 상속 관계가 아닌 테이블에 많이 사용 되는 속성(컬럼)이 있다면 그걸 모아서 상속 받아 사용하는 것에 있다.
예를 들자면 테이블에 created_at, updated_at과 같이 데이터의 추가 시간, 변경 시간을 관리하는 것은 상속 보단 어느 테이블이나 가질 수 있는 공통된 속성일 뿐인데 이러한 속성을 관리하기 편하게 해준다.
@MappedSuperclass
public abstract class BaseEntity {
private String createdAt;
private String updatedAt;
}
@Entity
public class Member extends BaseEntity {
}