Sobes.tech
Junior — Middle

Hibernate ishlatilganda N+1 muammosining yuzaga kelishining misolini keltira olasizmi?

sobes.tech AI

AIdan javob

N+1 muammo, bog'liq mavjudotlar to'plamini yuklashda yuzaga keladi, chunki Hibernate asosiy mavjud uchun (N) so'rov yuboradi va har bir bog'liq mavjud uchun alohida (+1) so'rov yuboradi. Masalan, Author mavjudoti va uning books to'plami bo'lsa:

List<Author> authors = session.createQuery("from Author").list();
for (Author author : authors) {
    System.out.println(author.getBooks().size()); // Lazy yuklashda, har bir kitob uchun alohida so'rov yuboriladi
}

Bu yerda, avvalo, barcha mualliflarni olish uchun so'rov yuboriladi, va har bir muallif uchun kitoblarni yuklash uchun alohida so'rov yuboriladi. Bu ko'p so'rovlar va ishlash tezligini pasaytiradi.

Bu muammoni oldini olish uchun fetch join dan foydalanish mumkin:

List<Author> authors = session.createQuery("select a from Author a join fetch a.books").list();

Bu, mualliflar va ularning kitoblarini bitta so'rov bilan yuklash imkonini beradi.