关于s2sh框架关于hibernate懒加载问题的说明和解决方案

首先我们来看下面这个图,解释了一个web程序的一次请求流程!

关于s2sh框架关于hibernate懒加载问题的说明和解决方案

懒加载异常的说明:

  懒加载就是我们在查询一个对象时,它所有的属性是否要被查出来!

  如果懒加载开启的话,session在service层就被关闭了,而我们的view如果不需要他的属性的话,那就不会出现懒加载异常,如果需要属性,这时候session已经关闭了所以就会出现懒加载异常,这个时候我们就考虑能否把session放到请求完成之后再进行关闭。

解决:

  答案当然是可以,那就是使用过滤器,在请求结束之后将session关闭,在web.xml里面配置上以下配置即可:(注意放到struts过滤器之前)

1     <!-- 配置spring关于hibernate懒加载的问题 -->
2     <filter>
3         <filter-name>OpenSessionInViewFilter</filter-name>
4         <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
5     </filter>
6     <filter-mapping>
7         <filter-name>OpenSessionInViewFilter</filter-name>
8         <url-pattern>*.action</url-pattern>
9     </filter-mapping>