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
복사