2건을 조회 했을 때 총 11번의 쿼리가 날아갔기 때문에 최적화 해보자.

repository

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();
}

디비 입장에서는 당연하다.

문제는 우리가 의도 했던 것과 다른 결과가 나왔다.

심지어 레퍼런스까지 똑같다.

우리가 원하는 order를 알려줘야 한다. distinct를 이용해서!

public List<Order> findAllWithItem() {
	return em.createQuery("select distinct 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();
}