Sobes.tech
Junior — Middle

Kaip Hibernate įgyvendina vėlinę kolekcijų inicializaciją?

sobes.tech AI

Atsakymas iš AI

Hibernate'e vėluojamas įkėlimas (lazy loading) kolekcijos įgyvendinamas per proxy objektus ir specialius kolekcijų apvalkalus. Kai įkeliate entitetą su kolekcija, Hibernate nedelsdamas įkelia visus kolekcijos elementus, o vietoj to sukuria proxy kolekciją, kuri turi nuorodą į sesiją ir užklausos informaciją.

Kai kolekcija pirmą kartą naudojama (pavyzdžiui, kviečiant size() metodą arba atliekant iteraciją), Hibernate automatiškai vykdo užklausą į duomenų bazę ir įkelia tikruosius duomenis. Tai padeda taupyti išteklius ir sumažinti įkėlimo laiką, ypač dirbant su dideliais duomenų kiekiais.

Pavyzdys:

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

    // getteriai ir setteriai
}

Čia kolekcija books bus įkelta tik pirmo naudojimo metu, o ne įkeliant Author objektą.