Junior — Middle
Kako je u Hibernate-u implementirano odloženo inicijalizovanje kolekcija?
sobes.tech АИ
Одговор од АИ
У Hibernate-у, одложено учитавање (lazy loading) колекција реализује се преко прокси-објеката и посебних обвитака колекција. Када се учита ентитет са колекцијом, Hibernate не учита одмах све елементе колекције, већ уместо тога креира прокси-колекцију која садржи референцу на сесију и информације о упиту.
Када се колекција први пут користи (на пример, позивањем метода size() или вршењем итерације), Hibernate аутоматски извршава упит ка бази података, учитавајући стварне податке. Ово помаже у уштеди ресурса и смањењу времена учитавања, посебно при раду са великим количинама података.
Пример:
@Entity
public class Author {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "author")
private Set<Book> books;
// геттери и сеттери
}
Овде ће колекција books бити учитана само при првом приступу, а не при учитавању објекта Author.