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