JPA에서 바로 DTO로 조회하여 극한의 최적화를 해보자.

@GetMapping("/api/v4/simple-orders")
public List<OrderSimpleQueryDTO> ordersV4() {
	return orderRepository.findOrderDTOs();
}
public List<OrderSimpleQueryDTO> findOrderDTOs() {
	return em.createQuery("select new jpabook.jpashop.repository.OrderSimpleQueryDTO(o.id, m.name, o.orderDate, o.status, d.address)" +
			" from Order o" +
			" join o.member m" +
			" join o.delivery d", OrderSimpleQueryDTO.class
	).getResultList();
}

만약 데이터 사이즈가 엄청 커서 필드가 20, 30개인 경우, 고객 트래픽이 많은 경우는 고민이 필요하지만 보통 페치 조인을 해도 될 듯하다. 결정 방법은 뒤에서 설명

단점

정리