Hibernate懒加载在SSH项目中的配置及原理
2016-04-19 23:13
316 查看
Hibernate懒加载在SSH项目中
当使用懒加载的时候, 查找出来的对象中的数据如对象中的集合,它并没有加载出来,只有当对象调用的时候才会向数据库发出查询语句, 这就会造成在hibernate中得到一个查询出来的对象,当在action或者jsp页面取里面的数据, 这时候session已经关闭了,查询请求当然就发不出去了,抛出no session 异常
解决:
为了解决这个问题,配置一个 OpenSessionInViewFilter过滤器,它在struts2过滤器之前.并且需要在spring中配置好sessionFactory
在web.xml中的配置
它的执行原理就是在Struts2过滤器执行之前开启session事物,在struts2执行完毕之后,关闭session, 那么在struts2的整个响应过程共session的是存在的,随时都可以向数据库取数据.
但是session的存在时间延长,一级缓存中的数据在内存中停留时间变长,占用内存.
当使用懒加载的时候, 查找出来的对象中的数据如对象中的集合,它并没有加载出来,只有当对象调用的时候才会向数据库发出查询语句, 这就会造成在hibernate中得到一个查询出来的对象,当在action或者jsp页面取里面的数据, 这时候session已经关闭了,查询请求当然就发不出去了,抛出no session 异常
解决:
为了解决这个问题,配置一个 OpenSessionInViewFilter过滤器,它在struts2过滤器之前.并且需要在spring中配置好sessionFactory
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> ...
在web.xml中的配置
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext.xml</param-value> </context-param> <!-- 注意OpenSessionInViewFilter过滤器要配置在struts2过滤器之前 --> <filter> <filter-name>OpenSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>OpenSessionInViewFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
它的执行原理就是在Struts2过滤器执行之前开启session事物,在struts2执行完毕之后,关闭session, 那么在struts2的整个响应过程共session的是存在的,随时都可以向数据库取数据.
但是session的存在时间延长,一级缓存中的数据在内存中停留时间变长,占用内存.
相关文章推荐
- Linux Generating SSH Keys
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- 杰奇登录后的东西都是在session里面的
- ASP中SESSION无法保存问题的解决办法
- Oracle中的Connect/session和process的区别及关系介绍
- Node.js编程中客户端Session的使用详解
- 浅谈COOKIE和SESSION区别
- 解析PHP的session过期设置
- php中Session的生成机制、回收机制和存储机制探究
- php中将一个对象保存到Session中的方法
- 深入解析Session是否必须依赖Cookie
- 对比分析php中Cookie与Session的异同
- PHP Session机制简介及用法
- 新手菜鸟必读:session与cookie的区别
- 深入讲解PHP Session及如何保持其不过期的方法
- PHP Session变量不能传送到下一页的解决方法
- PHP中的session永不过期的解决思路及实现方法分享
- php session实现多级目录存放实现代码