在休眠以及簡單的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. 我們如何減少頁面錯誤
- 6. 如何減少SSH2的「加載」時間
- 7. 減少JavaScript對象
- 8. Javascript - 減少對象
- 9. 刪除GDI對象不會減少它們的編號
- 10. 高效Redux的減速,避免不必要的對象副本
- 11. 我的WordPress的網站需要很長時間來加載如何減少它?
- 12. 如何減少Docx4j加載時間
- 13. 如何減少我的網站的javascript/jquery/ajax加載時間?
- 14. 如何減少我的頁面上的CURLOPT php加載時間?
- 15. 我會如何減少wordpress網站的加載時間?
- 16. 減少Obj文件以快速加載對象
- 17. 減少jQuery代碼的行數,不必要的重複
- 18. IE/JS:減少對象
- 19. 如何減少CMake引入的不必要的C++庫依賴項?
- 20. 減少PhoneGap加載時間
- 21. 我們如何提高性能並卸載不必要的選擇器?
- 22. eXist db文件(words.dbx和dom.dbx)不斷增加,我該如何減少它們?
- 23. 簡化和減少不必要的輸出顯示
- 24. 在類成員變量中減少不必要的相同值
- 25. 使用GPUImage捕獲時減少不必要的運動模糊
- 26. 通過刪除不必要的功能減少JQuery大小
- 27. 減少多實例服務不必要的工作
- 28. 我們如何避免不必要的檢測
- 29. 如何重構此對象以減少對回調的依賴?
- 30. 加載不必要的directX文件?
通常情況下,加載相關對象會導致ORM性能受損。您需要根據您需要導致其他抓取的子屬性的可能性來設置抓取策略攻擊。例如,一個person對象檢索Address對象或Orders集合。地址可能需要,所以加載它,但訂單,也許不是,所以不太積極。 – 2009-08-17 12:59:10