728x90
반응형
SMALL
@MappedSuperclass란?
- 객체의 입장에서 공통 매핑 정보가 필요할 때 사용
- 예를 들어 공통으로 작성일, 작성자, 수정일, 수정자를 공통으로 집어넣고 싶을때 사용한다.
- 공통 매핑 정보가 필요할 떄 부모 클래스에 선언하고 속성만 상속받아서 사용하고 싶을 때 사용한다.
객체에 적용하기import lombok.Data; import javax.persistence.MappedSuperclass; import java.time.LocalDate; import java.time.LocalDateTime; @Data @MappedSuperclass public abstract class BaseEntity { /** * 작성자 및 작성일 */ private String createdBy; private LocalDateTime createdDate; /** * 수정자 와 수정일 */ private String lastModifedBy; private LocalDateTime lastModifedDate; }
@Entity @Data @NoArgsConstructor(access = AccessLevel.PROTECTED)//기본생성자 protected @ToString(of = {"id","username","age"}) public class Member extends BaseEntity { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age; @ManyToOne(fetch = LAZY) @JoinColumn(name = "team_id") Team team;
- Member객체에 적용하기
- BaseEntity( 공통 적용 값)
정리
- 상속관계 매핑이 아니다
- MappedSuperClass를 선언하면 엔티티가 아니며, 테이블과도 매핑되지 않는다.
- 단순히 부모 클래스를 상속받는 자식 클래스에 매핑 정보만 제공된다
- 부모 타입으로 조회가 불가능하다.
- 직접 생성할 일이 없으므로 추상 클래스로 만드는 것을 권장
- JPA에서 Entity는 Entity나 MappedSuperclass로 지정한 클래스만 상속받을 수 있다.
728x90
반응형
SMALL
'Spring > JPA' 카테고리의 다른 글
@Where Deprecated되고 새로 쓰이는 @SQLRestriction (1) | 2024.11.20 |
---|---|
JPA - DB 연결 예외 : 'url' attribute is not specified and no embedded datasource could be configured. (0) | 2024.06.14 |
JPA - 지연로딩과 즉시로딩 (1) | 2023.12.10 |
JPA - Proxy (2) | 2023.12.10 |
JPA - 상속관계매핑 (0) | 2023.12.09 |