正在侦听Hibernate会话创建

时间:2011-04-11 08:48:47

标签: java hibernate spring session trace

我的代码中有一个错误导致hibernate异常,其中一个对象在调用session.lock()时与两个打开的会话相关联。

我正在使用Spring 3.0.4和HibernateTemplate以及Hibernate 3.6.0。

我希望能够在创建Session时创建陷阱,为Session创建/存储堆栈跟踪,然后代理Session,以便在调用close()时清除堆栈跟踪。

我找到了this question,但这是专门针对网络应用的。我已经查看了hibernate事件/ Session工厂统计信息代码和spring代码,但看不到合适的挂钩点。

有人有任何建议吗?

2 个答案:

答案 0 :(得分:3)

此问题已发布在此论坛上,具有不同的环境(spring / grails / hibernate),但答案可以帮助您。

基本上,代理会话工厂并拦截对getCurrentSession的调用。

详见here

答案 1 :(得分:1)

如果目的是调试/解决您遇到的问题 - 启用spring hibernate的调试日志记录是一个更简单/更好的选择。您将能够跟踪第二个会话的打开位置。