在休眠以及簡單的ORM策略中,我通常會加載對象的所有值。是否有任何方法可以避免這種情況。 由於這個我慢慢運行的應用程序..我們如何減少不必要的對象加載?
0
A
回答
2
有幾種方法來實現這一目標:
啓用緩存。雖然SQL不會改變,但Hibernate會比較數據庫的結果並重用現有的對象。這並沒有帶來巨大的推動,但實施和維護起來很簡單。
創建第二個映射(相同的表,不同的對象)只加載一個值的子集。
將很少使用的數據移動到第二個表中。
使用自定義本機SQL查詢加載對象。在這裏,你必須確保你知道已經裝載了多少以及如何「填補空白」。
2
Hibernate的參考文檔有一章Improving Performance。你可以看看你的抓取策略,或者使用緩存是否會提高性能。
更具體地說,您需要提供有關應用程序的更多詳細信息以及如何使用通過ORM加載的對象。
0
在yoru實體映射中使用FetchType.LAZY。 即:
@Entity
public class MyEntity {
private List<MyAnotherEntity> values;
@ManyToOne(fetch = FetchType.LAZY)
public List<MyAnotherEntity> getValues() {
return values;
}
}
那麼,當您選擇您所需設置,如果你需要你的收藏被映射到對象提取模式的標準實體。
Criteria c = createCreteria(entityManager, MyEntity.class);
c.setFetchMode("values", FetchMode.JOIN);
相關問題
- 1. 我們如何隨時加載對象?
- 2. 減少不必要運動的算法?
- 3. 僅在必要時加載對象
- 4. 減少對象
- 5. Javascript - 減少對象
- 6. 高效Redux的減速,避免不必要的對象副本
- 7. 如何減少我的網站的javascript/jquery/ajax加載時間?
- 8. 我會如何減少wordpress網站的加載時間?
- 9. IE/JS:減少對象
- 10. 在類成員變量中減少不必要的相同值
- 11. 簡化和減少不必要的輸出顯示
- 12. 加載不必要的directX文件?
- 13. 如何重構此對象以減少對回調的依賴?
- 14. fgetc不增加指針或減少fpos_t對象(C)
- 15. 我們如何減少鏈接列表中的搜索時間?
- 16. 如何定義我們自己的地圖和減少類
- 17. 我有很多如果其他條件如何減少它們
- 18. 避免將不必要的數據從數據庫加載到對象(網頁)
- 19. 減少對象的數組中的JS
- 20. Facebook的評論頁面 - 對象缺少必要的值
- 21. 如何減少瀏覽器的負載?
- 22. CSS餅 - 減少到我需要的位
- 23. 如何防止不必要的更新持久對象?
- 24. 減少項目中的單身對象
- 25. 減少類似對象的內存
- 26. 減少哈希對象的深度
- 27. 減少遠程對象的數量
- 28. 減少地圖對象插入的ArrayList
- 29. 減少重疊對象組的數量
- 30. 如何防止Ajax重複加載不必要的元素?
通常情況下,加載相關對象會導致ORM性能受損。您需要根據您需要導致其他抓取的子屬性的可能性來設置抓取策略攻擊。例如,一個person對象檢索Address對象或Orders集合。地址可能需要,所以加載它,但訂單,也許不是,所以不太積極。 – 2009-08-17 12:59:10