public List<SimpleOrderDTO> ordersV2() {
return orderRepository.findAll(new OrderSearch()).stream()
.map(SimpleOrderDTO::new)
.collect(toList());
}
@Data
private static class SimpleOrderDTO {
private Long orderId;
private String name;
private LocalDateTime orderDate;
private OrderStatus orderStatus;
private Address address;
SimpleOrderDTO(Order order) {
orderId = order.getId();
name = order.getMember().getName();
orderDate = order.getOrderDate();
orderStatus = order.getStatus();
address = order.getDelivery().getAddress();
}
}
결과
order, member, delivery
먼저 order 테이블에서 select한다. inner join은 무시해도 된다. 필터링 조건을 쓰려고 했던 것, 회원 이름 같은 것
그 다음 member 조회가 lazy로 일어난다.
그 다음 delivery 조회가 lazy로 일어난다.