我们在项目中一般都会使用Spring来管理Hibernate的session,
但是在查询数据的时候默认会使用lazy-loading方式的,也就是通常所说的延迟加载,延迟加载方式不同于普通加载,他会在使用到数据的时候才回真正的发出SQL语句,而Spring会自动的关闭session的,那么我们在前端页面做展示的时候问题就来了,我们在后台的时候还没有发出SQL查询session就关闭了,到了前台,需要数据了,这个时候程序就会发出SQL了,但是此时的session已经关闭了,当然就会报错了
解决办法:在Spring中提供了这么一个类,OpenSessionInViewFilter,这个类在上面提到的错误中就有很大的作用了,它会对客户端每次请求分配一个session,将请求结果返回给客户端,并且在完成展现后关闭session。这个类是一个过滤器,在我们配置的URL中就会使用它了,在看看上面的原因,问题不就解决了吗?前端在数据展现完了Spring才回去关闭session,那么就不会有因为延迟加载而报session已经关闭的错误了,
参考:[url]http://redarmychen.iteye.com/blog/684702[/url]
添加最后的java代码在web.xml文件中即可