Sobes.tech
Middle

Mi a különbség a lustán (lazy) és a mohón (eager) betöltés között?

sobes.tech MI

Válasz az MI-től

Lusta betöltés késlelteti az objektum inicializálását az első hozzáférésig. Az előtérbe helyezett betöltés az objektumot azonnal inicializálja, amikor a fő objektum, amely tartalmazza, betöltődik.

Különbségek:

Jellemző Lusta betöltés Előtérbe helyezett betöltés
Betöltési idő Első használatkor A fő objektum betöltésekor
Terhelés Időben elosztott Egyszeri, a kezdetkor
Memória Kezdetben takarékoskodik a memóriával Azonnal több memóriát igényelhet
Teljesítmény Jobb részadatokkal való munkánál Gyorsabb lehet, ha minden adat azonnal szükséges

Hibernate példában:

// Lusta betöltés
@Entity
public class Order {
    @OneToMany(fetch = FetchType.LAZY)
    private List<Item> items;
}

// Előtérbe helyezett betöltés
@Entity
public class Order {
    @OneToMany(fetch = FetchType.EAGER)
    private List<Item> items;
}