Ir al contenido

N+1 Query (ARCH4050)

Esta página aún no está disponible en tu idioma.

Key java.orm.n-plus-one-query · Severity warning · Category orm

Iterating a collection and triggering a separate query per element (N+1) splits data that one query could load into N+1 round-trips. Fetch the related data eagerly with a single JOIN FETCH.

List<Order> orders = orderRepository.findAll();
for (Order order : orders) {
// A separate SELECT customer query per order
System.out.println(order.getCustomer().getName());
}
@Query("SELECT o FROM Order o JOIN FETCH o.customer")
List<Order> findAllWithCustomer();
List<Order> orders = orderRepository.findAllWithCustomer();
for (Order order : orders) {
System.out.println(order.getCustomer().getName());
}

Load related data in one query before the loop using JOIN FETCH or an entity graph.