除了使用OpenSessionInView模式之外,還有其他方法可以避免Hibernate Web應用程序中的LazyInitializationExceptions嗎?使用OpenSessionInView有什麼缺點嗎?避免Hibernate的策略LazyInitializationExceptions
回答
在處理我們的Web應用程序時,我們通常會事先決定在視圖頁面中需要哪些對象/字段,並確保在調度到視圖之前,所有對象都從模型中正確初始化。
這可以(至少)三種方式實現:使用急切策略(即FetchMode.JOIN
,如果您使用的是Criteria API)
Hibernate.initialize(property)
- fetching性質)
- 通過調用適當的屬性訪問隱含初始化特性
關於OpenSessionInView的缺點,您是否檢出了this頁?
通常是處理問題的最佳方式,而不需要做出全局決策來執行提前取回;與hql查詢結合使用「fetch」關鍵字。
從http://www.hibernate.org/hib_docs/reference/en/html/queryhql-joins.html
此外,「取」加入允許使用單一選擇與父母一起的對象初始化值的協會或收藏。這在收集的情況下特別有用。它有效地覆蓋了關聯和集合映射文件的外連接和惰性聲明。有關更多信息,請參見第19.1節「獲取策略」。
從貓的貓 內連接抓取cat.mate 左加入取cat.kittens
切換到JBoss Seam的。
Seam框架由開發Hibernate的人構建。
即使在視圖中打開會話,您仍然可能會遇到一些問題。根據您的Web應用程序的複雜程度,Open View In View不處理所有情況。在石英工作期間,例如發送電子郵件,我也遇到了顯示數據(在用戶界面中)與獲取實體有關的問題。
Hibernate已經智能地提取數據,改變提取模式會導致性能下降。不僅如此,而且你正在擺脫約定,並會用無關的配置細節來彌補你的項目。
沃爾特
甲骨文的Java教程指出,「企業Bean支持事務,用於管理共享對象的併發訪問的機制。」所以,爲了處理Lazy Fetch問題,我創建了一個無狀態Java會話Bean,然後在從該方法返回之前獲取所需的所有子類。 Oracle也將其稱爲「會話外觀」核心J2EE模式。這些實踐似乎比其他提及的其他應用程序更好。
- 1. 架構,以避免Hibernate LazyInitializationExceptions
- 2. 策略,以避免
- 3. 避免python範圍錯誤的策略
- 4. 避免與策略模式耦合
- 5. WPF策略避免顯卡敏感度?
- 6. 管理Hibernate Session的策略
- 7. 推薦在實體中使用equals並避免LazyInitializationExceptions?
- 8. Hibernate 5命名策略postgresql
- 9. Zend_Validate良好的策略,以避免重複的代碼
- 10. 周圍的顏色傳遞策略(避免參考?)
- 11. 避免在jQuery中使用async:false的策略?
- 12. 策略避免在查詢軌道中的MySQL查詢
- 13. 避免xcode項目文件衝突的策略?
- 14. 尋找避免小程序重載的可能策略
- 15. 避免文件上傳命名衝突的策略
- 16. 彈簧集成:用於避免丟失消息的策略
- 17. 在.NET中用ETL避免OutOfMemoryException的策略
- 18. 避免動態強制轉換的架構策略
- 19. 避免在拉請求上出現無用的策略錯誤?
- 20. 避免合併衝突的策略,例如在git
- 21. AntFarm反模式 - 避免策略,解毒藥幫助治癒
- 22. 使用策略模式無法避免切換條件
- 23. 如何使用變量並避免CMP0054策略違規?
- 24. 應該怎樣避免將UnitOfWork實例傳遞給策略?
- 25. 比較策略,以避免無樣式內容(FOUC)
- 26. Hibernate L2 Cache的事務策略
- 27. 如何避免「N + 1選擇」並指定具有多對一的(N)Hibernate用戶類型的獲取策略?
- 28. 使用策略模式以避免具體策略中的重複代碼使用什麼模式?
- 29. 在JHipster中指定Hibernate命名策略
- 30. Hibernate查詢緩存併發策略
Hibernate 4.1.6解決了這個問題:http://stackoverflow.com/questions/578433/how-to-solve-lazy-initialization-exception-using-jpa-and-hibernate-as-provider/11913404#11913404 – andreak 2012-08-11 09:14:38