[스프링부트] 엔티티 클래스 상속 관련

원서연·2023년 11월 28일
0

공통 : 엔티티 간에 상속을 받는 경우

먼저

부모 엔티티에만 지정해도 되는 어노테이션
부모-자식 둘다 지정해야하는 어노테이션이 있다.

@MappedSuperclass

부모 엔티티 클래스에 꼭 지정해야한다.

@MappedSuperclass
@SuperBuilder
@NoArgsConstructor(access = PROTECTED)
@Getter
@EqualsAndHashCode
@ToString
public class BaseEntity {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    @EqualsAndHashCode.Include
    private Long id;
}

@ToString(callSuper = true)

자식 엔티티에서 @ToString 어노테이션에 callSuper = true 옵션을 주어야 한다.

부모 엔티티에서는 그냥 @ToString 쓰면 됨.

@ToString(callSuper = true)
public class Member extends BaseEntity

@SuperBuilder

부모 엔티티와 자식 엔티티에서
@Builder 가 아닌 @SuperBuilder를 사용해야 한다.

public class Article extends BaseEntity
@Entity
@SuperBuilder
@AllArgsConstructor(access = PROTECTED)
@NoArgsConstructor(access = PROTECTED)
@Setter
@Getter
@ToString(callSuper = true)
public class Article extends BaseEntity {
    @ManyToOne(fetch = LAZY)
    private Member author;
    private String title;
    private String body;
}
profile
웹 백엔드 프로그래밍 Today I Learned

0개의 댓글