-
[스프링부트/웹 애플리케이션 개발]API 개발 고급-4스프링&스프링부트 2023. 1. 12. 17:28
간단한 주문 조회V3 : 엔티티를 DTO로 변환 - 페치 조인 최적화
@Repository @RequiredArgsConstructor public class OrderRepository { private final EntityManager em; 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(); } }
@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; }
- 조회했을 때 쿼리가 한 번 나가는 것을 확인
- 실무에서 성능 문제의 90%는 N+1 문제 > fetch join에 대해 완벽하게 알아두기
728x90'스프링&스프링부트' 카테고리의 다른 글
[스프링부트/웹 애플리케이션 개발]API 개발 고급 - 컬렉션 조회 최적화 -1,2 (0) 2023.01.13 [스프링부트/웹 애플리케이션 개발]API 개발 고급-5 (2) 2023.01.12 [스프링부트/웹 애플리케이션 개발]API 개발 고급-3 (0) 2023.01.12 [스프링부트/웹 애플리케이션 개발]API 개발 고급-2 (0) 2023.01.11 [스프링부트/웹 애플리케이션 개발]API 개발 고급-1 (1) 2023.01.11