Sobes.tech
Junior — Middle

Hoe wordt de vertraagde initialisatie van collecties in Hibernate geïmplementeerd?

sobes.tech AI

Antwoord van AI

In Hibernate wordt lazy loading van collecties geïmplementeerd via proxy-objecten en speciale collectie-omslagen. Bij het laden van een entiteit met een collectie, laadt Hibernate niet meteen alle elementen van de collectie, maar creëert in plaats daarvan een proxy-collectie die een verwijzing naar de sessie en informatie over de query bevat.

Wanneer de collectie voor het eerst wordt gebruikt (bijvoorbeeld door de methode size() aan te roepen of door te itereren), voert Hibernate automatisch een databasequery uit om de echte gegevens te laden. Dit bespaart bronnen en verkort de laadtijd, vooral bij het werken met grote hoeveelheden gegevens.

Voorbeeld:

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

    // getters en setters
}

Hier wordt de collectie books alleen geladen bij de eerste toegang, niet bij het laden van het Author-object.