Sobes.tech
Junior — Middle

Hibernate'da kolleksiyalarni kechiktirilgan boshlash qanday amalga oshiriladi?

sobes.tech AI

AIdan javob

Hibernate'da kechiktirilgan yuklash (lazy loading) kolleksiyalar proxy obyektlari va maxsus kolleksiya qoplamalari orqali amalga oshiriladi. Entitiy kolleksiya bilan yuklanganda, Hibernate darhol barcha elementlarni yuklamaydi, balki o'rniga, sessiya va so'rov haqida ma'lumotlarni o'z ichiga olgan proxy kolleksiyasini yaratadi.

Kolleksiya birinchi marta ishlatilganda (masalan, size() metodini chaqirish yoki iteratsiya qilish), Hibernate avtomatik ravishda ma'lumotlar bazasiga so'rov yuboradi va haqiqiy ma'lumotlarni yuklaydi. Bu resurslarni tejash va yuklash vaqtini qisqartirishga yordam beradi, ayniqsa katta ma'lumotlar bilan ishlaganda.

Misol:

@Entity
public class Author {
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "author")
    private Set<Book> books;

    // getterlar va setterlar
}

Bu yerda, books kolleksiyasi faqat birinchi marta murojaat qilinsa yuklanadi, Author obyekti yuklanayotganda emas.