public List<Order> findAllWithItem() {
return em.createQuery(" select o from Order o"
+ " join fetch o.member m"
+ " join fetch o.delivery d"
+ " join fetch o.orderItems oi"
+ " join fetch oi.item i", Order.class)
.getResultList();
}
private List<OrderQueryDto> findOrders() {
return em.createQuery(
"select new jpabook.jpashop.repository.order.query.OrderQueryDto(o.id, m.name, o.orderDate, o.status, d.address) from Order o"
+ " join o.member m"
+ " join o.delivery d", OrderQueryDto.class)
.getResultList();
}
API 최적화의 경우 다음의 순서를 권장한다.
따라서 개발자는 최적화와 코드의 재사용성 사이에서 트레이드 오프가 필요하다.
주문내역을 조회할 때 '책'이라는 상품이 주문된 내역을 조회하려고 할 때
order, orderItem, item에 fetch 조인을 사용할 수 있을까?