Sobes.tech
Junior — Middle

Чӣ гуна дар Hibernate оғозёбии дермиҳнати маҷмӯаҳо амалӣ мешавад?

sobes.tech AI

Ҷавоб аз AI

در Hibernate، بارگذاری تنبل (lazy loading) مجموعه‌ها از طریق اشیاء پروکسی و پوشش‌های خاص مجموعه‌ها پیاده‌سازی می‌شود. هنگام بارگذاری یک موجودیت همراه با مجموعه، Hibernate بلافاصله تمام عناصر مجموعه را بارگذاری نمی‌کند، بلکه در عوض یک مجموعه پروکسی ایجاد می‌کند که حاوی ارجاع به جلسه و اطلاعات مربوط به پرس‌وجو است.

وقتی مجموعه برای اولین بار استفاده می‌شود (مثلاً با فراخوانی متد size() یا انجام تکرار)، Hibernate به طور خودکار یک پرس‌وجو به پایگاه داده ارسال می‌کند و داده‌های واقعی را بارگذاری می‌کند. این کمک می‌کند تا منابع صرفه‌جویی شده و زمان بارگذاری کاهش یابد، به ویژه هنگام کار با حجم‌های بزرگ داده.

مثال:

@Entity
public class Author {
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "author")
    private Set<Book> books;

    // getter و setter
}

در اینجا، مجموعه books تنها در اولین دسترسی بارگذاری می‌شود، نه هنگام بارگذاری شی Author.