Middle
Care este diferența dintre încărcarea leneșă (lazy) și cea avidă (eager)?
sobes.tech AI
Răspuns de la AI
Încărcarea întârziată amână inițializarea obiectului până la primul acces la acesta. Încărcarea avidă inițializează obiectul imediat la încărcarea obiectului principal care îl conține.
Diferențe:
| Caracteristică | Încărcare întârziată | Încărcare avidă |
|---|---|---|
| Timpul de încărcare | La prima utilizare | La încărcarea obiectului principal |
| Încărcare | Distribuită în timp | Unică, la început |
| Memorie | Economisește memorie inițial | Poate necesita mai multă memorie imediat |
| Performanță | Mai bună când se lucrează cu parte din date | Poate fi mai rapid dacă toate datele sunt necesare imediat |
Exemplu în Hibernate:
// Încărcare întârziată
@Entity
public class Order {
@OneToMany(fetch = FetchType.LAZY)
private List<Item> items;
}
// Încărcare avidă
@Entity
public class Order {
@OneToMany(fetch = FetchType.EAGER)
private List<Item> items;
}