스프링 부트 + JPA 쓰는데요. 고객 100명 목록 뿌리고 각 고객마다 주문 건수 보여주는 화면을 만들었어요. 그런데 로그에 SQL이 101개 찍히더라고요. 고객 조회 1번은 이해가 가는데 나머지 100개가 왜 나가는지...
대충 이렇게 짰습니다.
List<Customer> customers = customerRepository.findAll();
for (Customer c : customers) {
System.out.println(c.getOrders().size());
}
getOrders() 부를 때마다 SELECT가 한 방씩 나가는 것 같아요. 그래서 fetch를 LAZY에서 EAGER로 바꿔봤는데 이건 오히려 findAll 할 때부터 하나씩 다 긁어와서 똑같이 쿼리 폭발하더라고요.
연관 엔티티를 한 번에 같이 가져오는 방법이 없을까요? 데이터 좀만 늘어나면 페이지 뜨는 데 몇 초씩 걸려서 큰일입니다.