Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 알고리즘
- java
- github
- HTML
- 부트캠프
- 기본생성자
- html tag
- DTO
- entity
- 코드업
- HashSet
- Codeup
- 깃허브
- CRUD
- 프로그래머스
- 에러
- stringbuffer
- @builder
- Python
- SQL
- lv1
- 상속
- 브랜치
- git
- 자바
- 부스트코스
- @NoArgsConstructor
- 캡슐화
- @AllArgsConstructor
- 파이썬
Archives
- Today
- Total
잉?
[SpringBoot] Service단에서의 DTO <--> Entity의 변환. 본문
Service는 비즈니스 로직이 있는 곳이다.
DB 저장 또는 조회가 필요할 때 Repository에 요청하는 곳이기도 한데
요청하기 위해서는 DTO에서 Entity로 변환해줘야 한다.
그리고 요청받은 데이터(Entity)를 다시 DTO로 변환해서 컨트롤러(Controller)로 보내줘야 한다.
좀 더 자세한 정보는 https://dahlia15.tistory.com/73
그 과정을 살펴보겠다.
Service
public CommentResponseDto createComment(Long id, CommentRequestDto requestDto, UserDetailsImpl userDetails) {
// dto -> entity
Blog blog = blogRepository.findById(id).orElseThrow(
() -> new NullPointerException("찾을 수 없습니다."));
Comment comment = new Comment(requestDto, userDetails, blog);
// entity -> db저장
commentRepository.save(comment);
// entity -> dto
return new CommentResponseDto(comment);
}
---------------------------------------------------------------------------------
또 다른 Service단 예시이다.
Blog newBlog = new Blog(blogRequestDto);
// entity -> db저장
Blog saveBlog = blogRepository.save(newBlog);
// entity -> ResponseDto 바꿔서 보내줌
BlogResponseDto responseDto = new BlogResponseDto(saveBlog);
return responseDto;
// 한줄로 줄인다면
// return new BlogResponseDto(blogRepository.save(new Blog(blogRequestDto));
ResponseDto
public class BlogResponseDto {
.
.
.
// [게시글 전체 조회를 했을 경우 보여지는 댓글 리스트]
// service에서 controller로 보내기 위해선 entity -> dto로 변환해 줘야한다.
// List로 받아준다. 근데 이 리스트에는 DTO로 받아준다.
private List<CommentResponseDto> commentResponseDto;
public BlogResponseDto(Blog blog) {
// 하지만 받아온 리스트는 Entity인 상태.
this.commentResponseDto = new ArrayList<>();
// 일단, blog엔티티에저장된 댓글entity를 getCommentList로 받아온다.
// Comment를 자료형으로 갖는 comment변수에 하나씩 값을 넣어준다.
for(Comment comment : blog.getCommentList()){
// CommentResponseDto responseDto = new CommentResponseDto(comment)와 같다.
// 즉, dto로 변환해준 entity를 위에 만들어둔 List<CommentResponseDto>에 add.
commentResponseDto.add(new CommentResponseDto(comment));
}
}
}
'자바(Java) > 스프링부트(SpringBoot)' 카테고리의 다른 글
[SpringBoot] 단위 테스트를 위한 Mockito? 그게 뭔데? (0) | 2023.07.26 |
---|---|
[SpringBoot] 단위 테스트(Unit Tests)는 뭔데? + 사용 이유 (0) | 2023.07.25 |
[SpringBoot] Entity란? + @Table, @NoArgsConstructor, @AllArgsConstructor (0) | 2023.07.10 |
[SpringBoot] 빌더 패턴의 “toEntity”와 “of” 메서드 (0) | 2023.07.04 |
[SpringBoot] 빌더 패턴(Builder Pattern)이란? + 사용 이유 (0) | 2023.06.30 |
Comments