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.