본문 바로가기

Programming/Java & JSP & Spring

[JPA] Entity 칼럼 상속

테이블을 설계하다보면 칼럼이 많이 중복되는 경우가 있을 수 있다.

(정규화를 할 수 없는 경우, 예를 들어 히스토리 성 테이블 같은 경우)

 

테이블과 매핑하지 않고 부모 클래스를 상속받는 자식 클래스에게 매핑 정보(엔티티 칼럼)만 제공하고 싶으면

@MappedSuperclass를 사용하면 된다.

 

@MappedSuperclass는 비유를 하자면 추상 클래스와 비슷한데 @Entity는 실제 테이블과 매핑되지만

@MappedSuperclass는 실제 테이블과 매핑 되지 않는다.

 

단순한 상속 목적으로 사용한다.

@MappedSuperclass
@Data
public abstract class BaseEntity {
   @Id
   @GeneratedValue 
   private Long id; 
    
   private String name; 
}
@Entity
@Data
public class Member extends BaseEntity {
	//ID, NAME 상속 
    private String email; 
}

@Entity @Data 
public class Seller extends BaseEntity {
	//ID, NAME 상속 
    private String shopName;
}