专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 软件架构设计

过滤器之Hibernate自动提交事务,并封锁会话

发布时间:2011-06-20 02:11:18 文章来源:www.iduyao.cn 采编人员:星星草
过滤器之Hibernate自动提交事务,并关闭会话

      最近我们学到的Hibernate中,有个对房屋信息的查询功能。其中页面的一句代码如下:

   以上写法用EL显示房屋的信息,但我们的DAO用Hibernate实现的时候,几个相关的对象都要把lazy设置成false,不然就会出现会话已经关闭的错误。以下是House.hbm.xml原来的写法:

  

因为在访问到house.street的时候,Hibernate还会再去查一次数据库,而如果我们的DAO中的代码如下:


会话已经关闭,就会出现会话关闭的错误。当然还有一种做法就是不关闭会话,不过这不是一种解决的办法。

虽然以后我们会学到Spring有更好的解决方法,但今天如果只用Hibernate的话,我们自己有没有办法去解决这个问题,就是让会话在请求结束后才关闭。这样也就不用把lazy设置成false了。于是就有了下面的过滤器的实现:



在web.xml中配置如下:


这样我们的DAO就可以这样写:


不用关闭会话,而House.hbm.xml就变成:


没有了lazy那项。

其中HibernateUtils的代码基本上是MyEclipse自动产生的。只是我把它汉化了。呵呵:


这样每次用户请求就会打开会话和事务,请求结束就提交事务,并关闭会话。解决了上面的问题。


友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: