Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Spring Boot] BaseEntity에 사용되는 @SuperBuilder와 @MappedSuperclass 본문
Backend/스프링부트
[Spring Boot] BaseEntity에 사용되는 @SuperBuilder와 @MappedSuperclass
Gaejirang-e 2022. 12. 6. 10:40@SuperBuilder
한 번에 세팅하기 위해 자식클래스와 부모클래스 모두에 @SuperBuilder를 사용한다.
❓ 빌더 패턴
: 복합 객체의 생성과정과 표현방법을 분리하여,
동일한 생성절차에서 서로 다른 표현결과를 만들 수 있게 하는 패턴이다.
1. 생성자 파라미터가 많을 경우 가독성을 위해 사용
2. 순서가 상관없다
빌더x
Member member = new Member("member1", "{noop}1234", "nick", "user1@test.com")
빌더o
Member member = Member.builder()
.username("member1")
.password("{noop}1234")
.nickname("nick")
.email("user1@test.com")
.build();
@MappedSuperclass
BaseEntity
@Getter
@SuperBuilder // 자식클래스의 빌더를 이용하여 부모클래스의 필드(createDate, modifyDate)까지 한번에 세팅할 수 있다
@MappedSuperclass // 공통매핑정보(createDate, modifyDate)가 필요할 때, 부모클래스에 선언
@NoArgsConstructor(access = PROTECTED)
@EntityListeners(AuditingEntityListener.class) // Audit이란, 시간에 대해서 자동으로 값을 넣어주는 기능
@ToString
public class BaseEntity {
@Id
@GeneratedValue(strategy = IDENTITY)
private Long id;
@CreatedDate
private LocalDateTime createDate;
@LastModifiedDate
private LocalDateTime modifyDate;
}
'Backend > 스프링부트' 카테고리의 다른 글
[Spring Boot] 테스트용 샘플DB 분리, 샘플데이터 생성 (0) | 2022.12.07 |
---|---|
[Spring Boot] MockMvc를 이용한 테스트 (0) | 2022.12.07 |
[Spring Boot] IoC 컨테이너와 DI, @Configuration + @Bean (0) | 2022.12.05 |
[Spring Boot] QueryDSL, Q클래스 (0) | 2022.12.04 |
[Spring Boot] 폼과 폼 Validation (0) | 2022.11.28 |