栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

视图中的Hibernate Open Session:每个请求的交易量?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

视图中的Hibernate Open Session:每个请求的交易量?

您的担忧是正确的,Wiki页面上提供的解决方案过于简单。交易不应在Web层进行管理-交易应在服务层进行。

正确的实现将打开一个会话并将其绑定到过滤器中的线程。没有事务开始。会话进入刷新模式永不-
只读模式。服务调用会将会话设置为自动刷新模式并启动/提交事务。服务方法完成后,会话刷新模式将恢复为从不。

还有一个选项可以不打开过滤器中的会话。每个服务层调用都会打开一个单独的会话和事务-
在完成服务调用后,会话不会关闭,但会注册为延迟关闭。Web请求处理完成后,会话将关闭。

Spring提供了如上所述的OpensessionInViewFilter。因此,请忽略jboss
Wiki文章,仅配置OpensessionInViewFilter-一切都会好起来。

SessionFactory.getCurrentSession()-在内部创建会话并将其分配给本地线程。每个请求/线程都会有自己的会话。Web请求处理完成后,会话将关闭。从代码中,您只需要使用SessionFactory.getCurrentSession()即可,而不必关闭它。jboss
Wiki页面上的代码示例是错误的-
在finally块中应该有一个SessionFactory.getCurrentSession()。close()。或者他们可能正在使用JTA事务,并且将hibernate配置为与JTA事务一起打开/关闭会话。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435982.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号