[JPA] @MappedSuperclass

HAEN·2023년 1월 9일
0

JPA

목록 보기
5/5

1. @MappedSuperclass이란?

공통 매핑 정보가 필요할 때 사용하는 어노테이션

위의 사진에서 Member와 Seller는 id와 name이라는 공통 속성을 가지고 있음
=> BaseEntity라는 부모 객체를 만들어 공통 속성을 가지게 하고, Member와 Seller가 상속 받게 함

@MappedSuperclass
class abstract BaseEntity {
	@Id @GeneratedValue
	private Long id;
    private String name;
    ...
}

class Member extends BaseEntity {
	private String email;
    ...
}

class Member extends BaseEntity {
	private String shopName;
    ...
}

2. 특징

  • @MappedSuperclass가 붙은 부모 클래스는 엔티티가 아니며 테이블과 매핑되지 않음
  • 자식 클래스에 매핑 정보만 제공함
  • 조회, 검색 불가(em.find(BaseEntity) X)
  • 직접 생성해서 사용하지 않으므로 abstract 클래스 권장
  • 주로 등록일, 수정일, 등록자, 수정자 같은 전체 엔티티에서 공통적으로 적용하는 정보를 모을 때 사용함
  • 참고: @Entity가 붙은 클래스는 @Entity 혹은 @MappedSuperclass가 붙은 클래스만 상속 가능



참고: 인프런 자바 ORM 표준 JPA 프로그래밍 기본편 - 김영한
profile
핸수

0개의 댓글