有垃圾回收時hibernate會話數據成員的對象,會話的jdbc連接是關閉的嗎?換句話說,離開關閉會話垃圾收集器壞主意?Hibernate會話和垃圾回收器
2
A
回答
2
您應該始終明確地關閉資源,而不要依賴GC /終結。
0
完全同意@Robert。不能強調,hibernate會話對象應該和JDBC連接一樣小心,你應該知道它在何時何地被打開以及在何時何地被關閉。
這當然是人們發現spring非常有用的原因之一,它提供了一個非常完整的框架來管理資源的生命週期,如jdbc連接和休眠會話。
0
如果您的實體是垃圾收集的,那麼沒有理由對會話進行GC分析。會話將在稍後或之後進行。
例如,如果我存儲在一個靜態的列表到會話的引用,我可以運行幾個小時我的應用程序,實體將得到回收,但不是會議...
會議應明確地關閉。
如果你不喜歡在代碼中明確結束,我完全同意你的看法,和其他許多人也。 :-)
一個常見的解決方案是在框架代碼中進行關閉,即寫入一次的代碼,並將其應用於所有事務。它可能發生在超類中,例如,如果所有事務都是通過命令模式實現的。
但是,最常見的實現模式是使用AOP來處理這樣的全局問題。我們的項目使用Spring,它提供了即裝即用,以關閉所有的Hibernate Session(和關聯交易),具有更多功能的支持提交/回滾:
- 如果拋出一個異常,在關閉它之前調用事務回滾
- 否則,會調用commit。
相關問題
- 1. Parallel Copy垃圾回收器和Parallel Scavenge垃圾回收器的區別
- 2. Java垃圾回收器
- 3. 噓,垃圾回收器
- 4. .NET垃圾回收器
- 5. Spidermonkey和垃圾回收
- 6. c#和垃圾回收
- 7. 垃圾收集和回調
- 8. HBase MemStore和垃圾回收
- 9. Objective-c和垃圾回收
- 10. HashMap.remove和垃圾回收
- 11. 循環和垃圾回收
- 12. 垃圾回收和cgo
- 13. 覆蓋手動php會話刪除垃圾回收器
- 14. Java列表和垃圾回收器
- 15. C#定時器和垃圾回收
- 16. mount()和jffs2_gcd_mtd0垃圾回收器
- 17. java垃圾回收
- 18. Java:垃圾回收
- 19. Python垃圾回收
- 20. C#垃圾回收
- 21. Erlang垃圾回收
- 22. java - 垃圾回收
- 23. JDBC垃圾回收
- 24. JS垃圾回收
- 25. requestAnimationFrame垃圾回收
- 26. vb.net垃圾回收
- 27. ColdFusion垃圾回收
- 28. PhoneGap垃圾回收
- 29. Chrome垃圾回收
- 30. Java:垃圾回收