Junior — Middle
Jak je v Hibernate implementováno odložené načítání kolekcí?
sobes.tech AI
Odpověď od AI
V Hibernate je odložené načítání (lazy loading) kolekcí implementováno pomocí proxy objektů a speciálních obalů kolekcí. Při načítání entity s kolekcí Hibernate ne načítá ihned všechny prvky kolekce, ale místo toho vytvoří proxy kolekci, která obsahuje odkaz na relaci a informace o dotazu.
Když je kolekce poprvé použita (například voláním metody size() nebo provedením iterace), Hibernate automaticky provede dotaz do databáze a načte skutečná data. To pomáhá šetřit zdroje a zkracovat dobu načítání, zejména při práci s velkými objemy dat.
Příklad:
@Entity
public class Author {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "author")
private Set<Book> books;
// gettery a settery
}
Zde bude kolekce books načtena pouze při prvním použití, nikoli při načítání objektu Author.