반응형
@MappedSuperclass
공통 매핑 정보가 필요할 때 사용한다.
공통 속성이 필요할 경우 하나의 객체로 관리할 수 있다.
예시로 모든 테이블에 등록자, 등록일, 수정자, 수정일이 필요한 경우
공통으로 사용할 클래스를 만들어서 @MappedSuperclass를 사용하고, 적용할 엔티티에서 상속받아 사용한다.
- 상속관계 매핑 X
- 엔티티 X, 테이블과 매핑 X
- 부모 클래스를 상속 받는 자식 클래스에만 매핑 정보를 제공
- 조회, 검색 불가(em.find(BaseEntity) 불가)
- 직접 생성해서 사용할 일이 없으므로 추상 클래스 권장
테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할을 한다.
주로 등록일, 수정일, 등록자, 수정자 같은 전체 엔티티에서 공통으로 적용하는 정보를 모을 때 사용
@Entity 클래스는 엔티티나 @MappedSuperclass로 지정한 클래스만 상속이 가능하다.
엔티티
@MappedSuperclass
public abstract class BaseEntitiy {
private String createdBy;
private LocalDateTime createDate;
private String lastModifiedBy;
private LocalDateTime lastModifiedDate;
}
@Entity
public class Member extends BaseEntitiy{
@Id
@GeneratedValue
@Column(name = "MEMBER_ID")
private Long id;
@Column(name = "USERNAME")
private String username;
@ManyToOne
@JoinColumn(insertable = false, updatable = false)
private Team team;
}
Hibernate:
create table Member (
MEMBER_ID bigint not null,
createDate timestamp,
createdBy varchar(255),
lastModifiedBy varchar(255),
lastModifiedDate timestamp,
USERNAME varchar(255),
team_TEAM_ID bigint,
TEAM_ID bigint,
primary key (MEMBER_ID)
)
반응형
'프로그래밍 언어 > JPA' 카테고리의 다른 글
[JPA]프록시를 사용하는 이유(즉시로딩, 지연로딩) (0) | 2023.04.22 |
---|---|
[JPA]상속관계 매핑 (0) | 2023.04.17 |
[JPA] 다양한 연관관계 매핑(다대일, 일대다, 일대일, 다대다) (0) | 2023.04.16 |
[JPA] 필드와 컬럼 매핑 어노테이션 (0) | 2023.04.12 |
[JPA] 데이터베이스 스키마 자동 생성 옵션 (0) | 2023.04.12 |