JPA. MappedSuperclass란?

무지성개발자·2024년 2월 15일
0

JPA

목록 보기
7/12

@MappedSuperclass

@MappedSuperclass는 객체의 상속을 통해 사용하지만 상속 관계 맵핑과는 전혀 다른 목적으로 사용한다.

@MappedSuperclass의 목적은 데이터의 상속 관계가 아닌 테이블에 많이 사용 되는 속성(컬럼)이 있다면 그걸 모아서 상속 받아 사용하는 것에 있다.

예를 들자면 테이블에 created_at, updated_at과 같이 데이터의 추가 시간, 변경 시간을 관리하는 것은 상속 보단 어느 테이블이나 가질 수 있는 공통된 속성일 뿐인데 이러한 속성을 관리하기 편하게 해준다.

예시

@MappedSuperclass
public abstract class BaseEntity {
	private String createdAt;
    private String updatedAt;
}

@Entity
public class Member extends BaseEntity {
}

특징

  • 상속관계 맵핑 전혀 상관없으니 반드시 구분.
  • 엔티티가 아니므로 테이블과 맵핑 되지 않음.
  • 테이블을 생성하여 사용하는 것이 아니니 추상클래스 사용 권장.
  • em.find(BaseEntity)로 조회 안됨.
  • extends로 상속 받는 엔티티 클래스에 속성 정보만 제공.
profile
no-intelli 개발자 입니다. 그래도 intellij는 씁니다.

0개의 댓글