Чӣ гуна бор кардани мавҷудоти вобаста ҳангоми истифодаи FetchType.EAGER дар JPA амалӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Ҳангоми истифодаи FetchType.EAGER дар JPA, мавҷудоти пайвастшуда ҳамзамон бо мавҷудоти асосӣ дар вақти иҷрои дархости ба базаи додаҳо бор карда мешаванд.
Ин маъно дорад, ки вақте ки объект аз база гирифта мешавад, JPA автоматӣ як дархости иловагӣ (ё дархости пайвастшуда бо JOIN) мебарад, то мавҷудоти пайвастшударо ба даст орад ва майдонҳои дахлдорро пур кунад.
Масалан, агар мавҷудоти Order дорои муносибат @OneToMany(fetch = FetchType.EAGER) бо OrderItem бошад, пас ҳангоми бор кардани фармоиш, ҳамаи мавҷудоти пайвастшудаи фармоиш фавран бор карда мешаванд.
Ин усул барои ҳолатҳое, ки маълумоти пайвастшуда ҳамеша зарур аст, қулай аст, аммо метавонад ба боркунии зиёдатӣ ва кам шудани самаранокӣ оварда расонад, агар маълумоти зиёде мавҷуд бошад ва онҳо ҳамеша истифода нашаванд.
Масалан:
@Entity
public class Order {
@OneToMany(fetch = FetchType.EAGER)
private Set<OrderItem> items;
// ...
}
Ҳангоми бор кардани Order, Hibernate дархостҳоро иҷро мекунад, то ҳам OrderItem-ро фавран ба даст орад.
Баръакс аз FetchType.LAZY, ки дар он мавҷудоти пайвастшуда танҳо дар аввал дастрасӣ ба онҳо бор карда мешавад.