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.