기존에 사용했던 new Post(PostRequestDto postRequestDto) 대신 사용할 수 있는 방법으로 기존 코드에 영향을 주지 않고 불필요한 코드의 양을 줄여주기 때문에 권장하는 방법이다.
생성 패턴은 인스턴스를 만드는 절차를 추상화하는 패턴으로 빌더 패턴은 이 중 하나이다.
장점 => 참고 블로그
1. 필요한 데이터만 설정할 수 있음
2. 유연성을 확보할 수 있음
3. 가독성을 높일 수 있음
4. 변경 가능성을 최소화할 수 있음
@Builder
public class PostRequestDto {
private String title;
private String content;
public Post toEntity(){
return Post.builder()
.title(this.title)
.content(this.content)
.build();
}
}
public ResponseEntity<ApiResponse> createPost(PostRequestDto postRequestDto) {
Post post = postRequestDto.toEntity();
postRepository.save(post);
}
@Builder
public class PostResponseDto {
private Long id;
private String title;
private String content;
public static PostResponseDto of(Post post){
return PostResponseDto.builder()
.id(post.getId())
.title(post.getTitle())
.content(post.getContent())
.build();
}
}
#1
public ResponseEntity<PostResponseDto> getPostId(Long postId) {
Post post = findPost(postId);
return ResponseEntity.ok(PostResponseDto.of(post));
}
#2
public ResponseEntity<List<PostResponseDto>> getPosts() {
return ResponseEntity.ok().body(postRepository.findAll().stream().map(PostResponseDto::of).toList());
}