자바 ORM 표준 JPA 프로그래밍 : 교보문고
자바 ORM 표준 JPA 프로그래밍 - 기본편 : 인프런
위 그림의
crateDate
,updateDate
,id
와같이 공통적으로 들어가는 속성들을
일일히 모든 Entity 마다 넣는 수고스러움을 덜기 위해 사용하는 방식이다.
@MappedSuperclass // Mapping 정보만 받는 class
public class BaseEntity
{
@Id @GeneratedValue
private Long id;
private LocalDateTime createDate;
private LocalDateTime modifiedDate;
}
공통적으로 사용하는 필드들을
BaseEntity
에 필드로 넣고
@MappedSuperclass
선언
@Entity
public class Album extends BaseEntity
{
private String artist;
----
@Entity
public class Book extends BaseEntity
{
private String author;
private String isbn;
---
@Entity
public class Movie extends BaseEntity
{
private String director;
private String actor;
BaseEntity 를 상속받는다
create table Album (
id bigint not null,
createDate timestamp,
modifiedDate timestamp,
artist varchar(255),
primary key (id)
)
Hibernate:
create table Book (
id bigint not null,
createDate timestamp,
modifiedDate timestamp,
author varchar(255),
isbn varchar(255),
primary key (id)
)
Hibernate:
create table Movie (
id bigint not null,
createDate timestamp,
modifiedDate timestamp,
actor varchar(255),
director varchar(255),
primary key (id)
)
@MappedSuperclass
는 공통적으로 사용되는 필드를 상속받아서 사용할 뿐
상속관계 Mapping 이 아니다.
Entity
가 존재하지 않기 때문에 당연히Table
도 존재하지 않는다.
직접 해당 객체를 생성하는 일이 없기 때문에 추상 class 로 만들어서 사용하는 것이 좋다.