有垃圾回收时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:垃圾回收