Middle
Ποια είναι η διαφορά μεταξύ της αργής (lazy) και της άμεσης (eager) φόρτωσης;
sobes.tech AI
Απάντηση από AI
Η αργή φόρτωση καθυστερεί την αρχικοποίηση του αντικειμένου μέχρι την πρώτη πρόσβαση σε αυτό. Η άμεση φόρτωση αρχικοποιεί το αντικείμενο αμέσως κατά τη φόρτωση του κύριου αντικειμένου που το περιέχει.
Διαφορές:
| Χαρακτηριστικό | Αργή φόρτωση | Άμεση φόρτωση |
|---|---|---|
| Χρόνος φόρτωσης | Κατά την πρώτη χρήση | Κατά τη φόρτωση του κύριου αντικειμένου |
| Φόρτωση | Κατανεμημένη στον χρόνο | Μοναδική, στην αρχή |
| Μνήμη | Εξοικονομεί μνήμη αρχικά | Μπορεί να απαιτήσει περισσότερη μνήμη άμεσα |
| Απόδοση | Καλύτερη με μερικά δεδομένα | Μπορεί να είναι ταχύτερη αν όλα τα δεδομένα χρειάζονται άμεσα |
Παράδειγμα σε Hibernate:
// Αργή φόρτωση
@Entity
public class Order {
@OneToMany(fetch = FetchType.LAZY)
private List<Item> items;
}
// Άμεση φόρτωση
@Entity
public class Order {
@OneToMany(fetch = FetchType.EAGER)
private List<Item> items;
}