Search

부모 클래스의 필드 까지 모두 빌더에 포함하기

Tags
Spring Boot
Date
2024/12/19

1. 개요

대게 많은 Entity 클래스에서 createdAt, updatedAt 같은 필드 값을 별도의 공통 클래스 (BaseEntity) 로 빼는 경우가 있습니다. 이 때, 별도의 어노테이션을 사용해야만 같은 빌더로 묶일 수 있습니다.

2. @SuperBuilder 사용

방법은 간단합니다. 부모 클래스와 자식 클래스 모두에 @SuperBuilder 를 사용하면 됩니다.
@EntityListeners(AuditingEntityListener.class) @Getter @SuperBuilder @MappedSuperclass @NoArgsConstructor(access = AccessLevel.PROTECTED) public class BaseEntity { @CreatedDate @Column(updatable = false, name = "created_at") private LocalDateTime createdAt; @LastModifiedDate @Column(name = "updated_at") private LocalDateTime updatedAt; }
Java
복사
@Getter @SuperBuilder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity @Table(name = "tb_users") public class UserEntity extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "user_id") private Long id; }
Java
복사