Send API
서버측 수신
@GetMapping("/api/v2/simple-orders")
public List<SimpleOrderDto> ordersV2(){
//ORDER 2건이면,
//1 + N(2건) N 문제 발생 (1 + 회원 N + 배송)
List<Order> orders = orderRepository.findAllByString(new OrderSearch());
List<SimpleOrderDto> result = orders.stream()
.map(o -> new SimpleOrderDto(o))
.collect(Collectors.toList());
return result;
}
Send API
서버측 수신
@GetMapping("/api/v3/simple-orders")
public List<SimpleOrderDto> ordersV3(){
List<Order> orders = orderRepository.findAllWithMemberDelivery();
List<SimpleOrderDto> result = orders.stream()
.map(o -> new SimpleOrderDto(o))
.collect(Collectors.toList());
return result;
}
//한 번에 모든 객체의 값을 채워서 리턴 = fetch join
public List<Order> findAllWithMemberDelivery(){
return em.createQuery("select o from Order o" +
" join fetch o.member m" +
" join fetch o.delivery d", Order.class
).getResultList();
}