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
- HashSet
- 파이썬
- html tag
- HTML
- 기본생성자
- 자바
- 에러
- stringbuffer
- github
- 부스트코스
- 프로그래머스
- entity
- 캡슐화
- Codeup
- java
- @builder
- 부트캠프
- lv1
- 코드업
- 알고리즘
- SQL
- 브랜치
- CRUD
- 상속
- Python
- 깃허브
- @AllArgsConstructor
- @NoArgsConstructor
- git
- DTO
Archives
- Today
- Total
잉?
[SpringBoot] 빌더 패턴의 “toEntity”와 “of” 메서드 본문
DTO (Data Transfer Object) 클래스에서의 toEntity메서드와 of메서드가 무엇일까?
우선 이 메서드들을 사용하는 이유를 알아보자면 entity 클래스와의 상호변환을 쉽게 하기 위함이다.
1. DTO와 entity 간의 변환 로직을 처리하여 코드의 가독성을 높이고,
2. 불필요한 반복 코드를 방지하여 애플리케이션 아키텍처를 유연하게 한다.
toEntity 메서드
- DTO에서 Entity로 변환하는 역할을 한다.
- 주로 데이터를 저장하거나 업데이트하는 작업에 사용된다.
- 이 메서드는 entity를 생성하고, DTO에서 받아온 필드 값을 entity에 설정하여 반환한다.
public Trade toEntity(User user) {
return Trade.builder() // Trade entity를 생성하기 위해 사용되는 빌더 패턴 시작 부분
.title(this.title) // Trade entity의 title필드를 TradeDTO의 title값으로 설정
.content(this.content)
.latitude(this.latitude)
.longitude(this.longitude)
.price(this.price)
.category(this.category)
.user(user)
.build();
}
of 메서드
- entity에서 DTO로 변환하는 역할을 한다.
- 주로 entity를 조회한 결과를 클라이언트로 전송할 때나, DTO로 변환하여 컨트롤러에서 전달할 때 사용한다.
(응답)
- 이 메서드는 entity에서 필요한 필드 값을 DTO에 설정하여 반환한다.
public static TradeResponseDto of(Trade trade) {
return TradeResponseDto.builder()
.id(trade.getId())
.title(trade.getTitle()) // TradeResponseDto의 title 필드를 Trade entity의 title 값으로 설정
.content(trade.getContent())
.username(trade.getUser().getUsername())
.latitude(trade.getLatitude())
.longitude(trade.getLongitude())
.price(trade.getPrice())
.category(String.valueOf(trade.getCategory()))
.tradeLikeCount(trade.getTradeLikes().size())
.tradeBookmarkList(trade.getTradeBookmarks().stream().map(bookmark -> bookmark.getTrade().getTitle()).toList())
.tradeCommentList(trade.getTradeComments().stream().map(TradeCommentResponseDto::of).toList())
.imageList(trade.getImage().stream().map(Image::getImageUrl).toList())
.tradeChatroom(trade.getTradeChatRoom().getId())
.build();
}
'자바(Java) > 스프링부트(SpringBoot)' 카테고리의 다른 글
[SpringBoot] Service단에서의 DTO <--> Entity의 변환. (0) | 2023.07.11 |
---|---|
[SpringBoot] Entity란? + @Table, @NoArgsConstructor, @AllArgsConstructor (0) | 2023.07.10 |
[SpringBoot] 빌더 패턴(Builder Pattern)이란? + 사용 이유 (0) | 2023.06.30 |
[SpringBoot] Path Variable과 Request Param의 차이점 (0) | 2023.06.27 |
[SpringBoot] 3 Layer Architecture를 알아보자 (0) | 2023.06.23 |
Comments