인프런 커뮤니티 질문&답변

terecal님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

주문 조회 V6: JPA에서 DTO로 직접 조회, 플랫 데이터 최적화

v6의 OrderQueryDto 생성자 호출 부분에서 에러가 발생하는데 이유를 잘몰겠어여

21.01.29 18:07 작성

·

437

0

안녕하세요  김영한 강사님

v6 로직을 작성하던중 에러가 발생하는데여  v6 로직중에
아래의 코드중 OrderQueryDto 생성자 호출  부분에서
에러가 발생하는데 원인이 무엇일까여? 

그리고  v6  최적화 로직은 전체적으로  쉽지 않은데  일단
v6 최적화 부분은 대충 의미를 파악한뒤  다음 강의로
넘어가도 될까여?

controller/OrderApiController.java

@GetMapping("/api/v6/orders")
public List<OrderFlatDto> ordersV6() {

List<OrderFlatDto> flats = orderQueryRepository.findAllByDto_flat();
return flats.stream()
.collect(groupingBy(o -> new OrderQueryDto(o.getOrderId(), o.getName(),
o.getOrderDate(), o.getOrderStatus(), o.getAddress()),
mapping(o -> new OrderItemQueryDto(o.getOrderId(),
o.getItemName(), o.getOrderPrice(), o.getCount()), toList())))
.entrySet()
.stream().map(e -> new OrderQueryDto(e.getKey().getOrderId(),
e.getKey().getName(),
e.getKey().getOrderDate(),
e.getKey().getOrderStatus(),
e.getKey().getAddress(),
e.getValue()))
.collect(toList());

}

OrderQueryDto.java

@Data
@EqualsAndHashCode(of = "orderId")
public class OrderQueryDto {
private Long orderId;
private String name;
private LocalDateTime orderDate; //주문시간
private OrderStatus orderStatus;
private Address address;
private List<OrderItemQueryDto> orderItems;

public OrderQueryDto(Long orderId, String name, LocalDateTime orderDate,
OrderStatus orderStatus, Address address) {

this.orderId = orderId;
this.name = name;
this.orderDate = orderDate;
this.orderStatus = orderStatus;
this.address = address;

}
}

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

2021. 01. 29. 22:43

안녕하세요. terecal님

파라미터 숫자가 맞지 않습니다.

마지막에 List<OrderItemQueryDto> orderItems가 빠졌네요^^

public OrderQueryDto(Long orderId, String name, LocalDateTime orderDate, OrderStatus orderStatus, Address address, List<OrderItemQueryDto> orderItems) {
this.orderId = orderId;
this.name = name;
this.orderDate = orderDate;
this.orderStatus = orderStatus;
this.address = address;
this.orderItems = orderItems;
}

추가로 이 부분은 난이도가 좀 있으니 우선 이런게 있구나 정도 알아두시고, 향후 성능 최적화의 필요성이 느껴질 때 다시 참고하시면 됩니다.

감사합니다.

terecal님의 프로필 이미지

작성한 질문수

질문하기