Sobes.tech
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.