Sobes.tech
Junior — Middle

Cum este implementată inițializarea întârziată a colecțiilor în Hibernate?

sobes.tech AI

Răspuns de la AI

În Hibernate, inițializarea întârziată (lazy loading) a colecțiilor este implementată prin obiecte proxy și învelișuri speciale pentru colecții. Când se încarcă o entitate cu o colecție, Hibernate nu încarcă imediat toate elementele colecției, ci creează în schimb o colecție proxy care conține o referință la sesiune și informații despre interogare.

Când colecția este utilizată pentru prima dată (de exemplu, apelând metoda size() sau efectuând o iterație), Hibernate execută automat o interogare către baza de date pentru a încărca datele reale. Acest lucru ajută la economisirea resurselor și la reducerea timpului de încărcare, mai ales când se lucrează cu volume mari de date.

Exemplu:

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

    // getters și setters
}

Aici, colecția books va fi încărcată doar la prima utilizare, nu la încărcarea obiectului Author.