Sobes.tech
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.