1
我的應用程序使用Hibernate從數據庫檢索數據。今天我調試了我的應用程序,偶然發現了EAGER的負載。休眠加載所有實體忽略懶惰加載
@Table(name = "orders")
@Entity
public class Order implements Serializable {
@OneToMany(fetch = FetchType.EAGER, mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true)
private List<DishQuantity> dishes = new ArrayList<>();
}
我改成了延遲加載這樣的:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true)
private List<DishQuantity> dishes = new ArrayList<>();
當我使用DAO我得到的結果如預期撥打電話從服務到數據庫,延遲加載實體不再可用:
但是當我要查詢並嘗試使用實體管理器獲取實體時,我收到以下內容:
它看起來像Hibernate反正加載所有實體,但交易關閉後,遲緩的實體將被丟棄,對不對?但無論如何,它從DB獲得所有實體,並且根本沒有提高數據庫性能。有沒有辦法強制Hibernate即使在事務過程中也不加載LAZY實體並減少數據庫負載?