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;
}