DTO로 바꾼 api의 성능 문제도 해결해 보자.
repository
public List<Order> findAllWithMemberDelivery(OrderSearch orderSearch) {
return em.createQuery("select o from Order o " +
"join fetch o.member m " +
"join fetch o.delivery d", Order.class
).getResultList();
}
@GetMapping("/api/v3/simple-orders")
public List<SimpleOrderDTO> ordersV3() {
return orderRepository.findAllWithMemberDelivery(new OrderSearch()).stream()
.map(SimpleOrderDTO::new)
.collect(Collectors.toList());
}
페치 조인으로 대부분의 문제를 해결할 수 있다.