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.
Hatalı
Bölüm başlığı “Hatalı”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 customerfor (Order o : orders) { total += o.getCustomer().getName().length();}Düzeltme
Bölüm başlığı “Düzeltme”İlişkiyi JOIN FETCH veya bir entity graph ile eager yükleyerek tek sorguda çekin.