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 օբյեկտի բեռնումից հետո։