프로그래머스 스진초 과제를 진행하면서 작성한 내용입니다.
Entity를 DTO로 변환하는 작업은 일반적으로 Service 레이어에서 수행된다고 한다.
아키텍처적인 측면에서, 각 레이어의 역할을 고려하면 Service 레이어가 변환 작업을 처리하는 것이 적절하다.
빌더 패턴(@Builder)을 사용해서 변환해보자.
@Builder를 사용하는 이유
- 필요한 데이터만 설정 가능하다
- 유연성을 확보할 수 있다
- 가독성을 높인다
- 불변성을 확보할 수 있다
기존에 Entity만 있었던 코드에 DTO를 추가해보자.
@Getter
@Setter
public class FoodEntity { // 기존 Entity
private Integer id;
private Timestamp regTime; // 등록 시간
private String foodName; // 음식 이름
private String foodPrice; // 음식 가격
private String foodImage; // 음식 이미지
}
@Getter
@Setter
@Builder
public class FoodDto { // DTO 생성
private Integer id;
private String foodName; // 음식 이름
private String foodPrice; // 음식 가격
private String foodImage; // 음식 이미지
public static FoodDto fromEntityToDto(FoodEntity foodEntity){
return FoodDto.builder()
.id(foodEntity.getId())
.foodName(foodEntity.getFoodName())
.foodPrice(foodEntity.getFoodPrice())
.foodImage(foodEntity.getFoodImage())
.build();
}
}
이제 Entity를 DTO로 변환해보자.