İçeriğe geç

ORM N+1 sorgusu (ARCH4079)

Anahtar java.performance.orm-n-plus-one · Önem error · Kategori performance

Sorgu sonucundaki her satır üzerinde lazy bir ilişkiye erişmek, ilişki başına ayrı bir sorgu tetikler. Bu, bir sorgu yerine N+1 sorgu yaparak veritabanını boğar.

List<Order> orders = repo.findAll();
for (Order o : orders) {
total += o.getCustomer().getName().length(); // lazy fetch per row
}
List<Order> orders = repo.findAllWithCustomer(); // JOIN FETCH customer
for (Order o : orders) {
total += o.getCustomer().getName().length();
}

İlişkiyi JOIN FETCH veya bir entity graph ile eager yükleyerek tek sorguda çekin.