OpenSessionInViewFilter在查询完之后不提交事务?

环境如下
Struts2+Spring3+Hibernate3
数据库 sqlserver2000

为了使用延迟加载, 加入了OpenSessionInViewFilter
[b]但发现, 在只有查询情况下, 请求处理完之后, 会有"打开的事务"[/b]
注:"打开的事务"可以用sqlserver企业管理器自带的 活动监视器查看
[b]若是更新操作, 不会出现有"打开的事务"[/b]

若去掉OpenSessionInViewFilter, 虽说延迟加载不能用了, 但不会出现"打开的事务"

求解!

1个回答

OpenSessionInViewFilter在查询完之后不提交事务:是的

这是因为当使用OpenSessionInViewFilter时session的flushMode默认为FlushMode#MANUAL,即不会commit 因此事务是不会提交的 最后仅session.close();

jinnianshilongnian
jinnianshilongnian 不用 有个init-param 查一下
7 年多之前 回复
hellojwzs
hellojwzs 总的说来OpenSessionInViewFilter还是比较弱的, 对于多个sessionFactory, 配置一个过滤器似乎就不能解决了, 但配置多个的话, 显然又极大的浪费数据库连接资源. 设置flushMode 为AUTO, 是不是需要自己继承一下OpenSessionInViewFilter啊?
7 年多之前 回复
jinnianshilongnian
jinnianshilongnian 如设置flushMode 为AUTO 试试
7 年多之前 回复
hellojwzs
hellojwzs 非常感谢jinnianshilongnian的回答, 我也看了您不少spring的文章, 真心喜欢. 虽说这个问题无伤大雅, 但在sqlserver的活动监视器里面会显示有"打开的事务", 始终是个祸害. 有什么解决办法吗?
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问