Sobes.tech
Junior — Middle

Hogyan valósul meg a Hibernate-ben a késleltetett kollekció inicializálás?

sobes.tech MI

Válasz az MI-től

A Hibernate-ben a késleltetett inicializálás (lazy loading) gyűjtemények proxy-objektumok és speciális gyűjteményburkolók segítségével valósul meg. Amikor egy entitást gyűjteménnyel töltünk be, a Hibernate nem tölti be az összes elemet azonnal, hanem helyette létrehoz egy proxy gyűjteményt, amely tartalmaz egy hivatkozást a session-re és a lekérdezés információira.

Amikor a gyűjteményt először használják (például a size() metódus hívásával vagy iterálással), a Hibernate automatikusan végrehajt egy adatbázis lekérdezést, hogy betöltse a valódi adatokat. Ez erőforrásokat takarít meg és csökkenti a betöltési időt, különösen nagy adatmennyiség esetén.

Példa:

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

    // getterek és setterek
}

Itt a books gyűjtemény csak az első hozzáféréskor töltődik be, nem az Author objektum betöltésekor.