๐ฐ @Bean, @Component, @Configuration๊ณผ @Transactional์ ์ ๋ฆฌํ๋ค.
๐ฐ Lv1 ๊ฐ์ธ๊ณผ์ ํผ๋๋ฐฑ์ ๋ฐ์์ ํผ๋๋ฐฑ์ ๋ํ ๋ด์ฉ๋ค์ ์ ๋ฆฌํด ๋ณด๋ ค ํ๋ค.
public PostResponseDto createPost(PostRequestDto requestDto) {
// RequestDto -> Entity
Post post = new Post(requestDto);
// DB ์ ์ฅ
Post savePost = postRepository.save(post);
// Entity -> ResponseDto
PostResponseDto postResponseDto = new PostResponseDto(post);
return postResponseDto;
}
์ ๋ฉ์๋๋ ์๋ก์ด ๊ฒ์๋ฌผ์ ์์ฑํ๊ณ ์ ์ฅํ๋ Transactional ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํ์ง ์์ ๋ฉ์๋์ด๋ค.
ํํฐ๋์ ํผ๋๋ฐฑ์ ๋ณด๊ณ ๋ค์ ์ฝ๋๋ฅผ ๋ณด์๋๋ฐ ์์ฑ
ํ๊ณ ์ ์ฅ
ํ๋ ์์
์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ์ ๊ฐํด์ง๋ ์์
์ด์๋ค.
๋๋ฌธ์ Transactional ์ด๋ ธํ ์ด์ ์ด ์ถ๊ฐ๋์ด์ผ ํ๋ค.
@CreatedDate
@Column(updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime createdAt;
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;
@Getter
public class PostResponseDto {
private Long id;
private String title;
private String username;
private String content;
private String password;
private LocalDateTime createdAt;
private LocalDateTime modifiedAt;
public PostResponseDto(Post post) {
this.id = post.getId();
this.username = post.getUsername();
this.title = post.getTitle();
this.content = post.getContent();
this.password = post.getPassword();
this.createdAt = post.getCreatedAt();
this.modifiedAt = post.getModifiedAt();
}
}
@Getter
@RequiredArgsConstructor
public class PostResponseDto {
private final Long id;
private final String title;
private final String username;
private final String content;
private final String password;
private final LocalDateTime createdAt;
private final LocalDateTime modifiedAt;
}
@RequiredArgsConstructor์ ์ฌ์ฉํ๋ฉด ํ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์์ฑ์๋ฅผ ์๋์ผ๋ก ์์ฑํด ์ค๋ค.
์ฃผ๋ก ์์กด์ฑ ์ฃผ์ ์ ์ฒ๋ฆฌํ๋ ํด๋์ค์์ ์ฌ์ฉํ๊ฒ ๋๋ค.
final
์ด๋ @NonNull
์ผ๋ก ์ ์ธํ๊ณ , ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ ํด๋น ํ๋๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ ์์ฑ์๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์๋ค.