在项目里面真正的精华就是web.xml里面的这几行代码:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter- class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
好啦,一切ok了。接下来的就有spring容器来帮我们做了。有的人也许会问了,你说得也太简单了吧?简单的让我不能相信了。其实不然,越复杂的东西有时候往往就是一句话的事。听我慢慢道来。
这个属性就是为了支持hibernate的延迟加载而设计的,spring倡导的是面向接口编程,而且在源文件里面大量的使用了Factory-mode 和Singleton-mode。但是这就和hibernate的延迟加载产了冲突。如果不使用hibernate的 OpenSessionInViewFilter过滤器,那么当使用完getHibernateTemplet().save()或者delete()对象以后,spring会自动的关闭session。即使你使用了延迟加载的机能,spring也不会管你那套的。该关的session一刻也不等。当你想延迟加载某些类的某些设置为延迟加载的属性以后,spring就会报出session is close的错误,这该死的spring。为了优化系统的启动速度我才延迟的,为什么你这么不通情达理?不然,使用了 OpenSessionInViewFilter以后,当你save完一个对象以后,因为有这个过滤器,所以spring会把这个连接放到线程池里面,而不是马上就关闭。当需要延迟加载的时候,spring会从线程池里面取出那个session完成加载的动作。当确定这个session确实不再需要的时候,spring才会close掉这个session。原理就是这么简单。我们只需要做的就是在web.xml里面配置那几行代码,其他的就按照我们预期的做,spring会自动帮我们完成我们想要的。
分享到:
相关推荐
介绍Spring+hibernate opensessioninview问题
为了练手培训,给大家准备的 Open Session In View 的简单例子,纯代码,大家可以参考,其中主要说了六部分内容: 1.通过接口编程 2.通过spring注入dao到 action 3.通过 open session in view filter 支持 延迟加载...
OpenSessionInView项目整合jar包
Spring提供的CharacterEncoding和OpenSessionInView功能
在没有使用Spring提供的Open Session In View情况下,因需要在service(or Dao)层里把session关闭,所以lazy loading 为true的话,要在应用层内把关系集合都初始化,如 company.getEmployees(),否则Hibernate抛...
SSH项目整合示例【OpenSessionInView】所用到的jar包 包含Struts + Hibernate + Spring所有jar及其依赖的jar
NULL 博文链接:https://8366.iteye.com/blog/472141
NULL 博文链接:https://likenice.iteye.com/blog/290162
NULL 博文链接:https://yanzhenwei.iteye.com/blog/1701164
和Spring中OpenSessionInView由于org.springframework.web.struts.ContextLoaderPlugIn中保存同一个对象的名不同导致openSessionInView失效 稍微修改后在struts-config.xml中使用MyContextLoaderPlugIn.jar包中...
SSH项目整合示例【OpenSessionInView】源码
最新版SSH项目整合 实现了OpenSessionInView。 hibernate5.2.3+struts2.5.2+spring4.3.3
3,在web.xml中配置 spring 的 OpenSessionInView 过滤器(解决抛LazyInitializationException的问题) 1,配置 <!-- 配置 spring 的 OpenSessionInView 过滤器 --> <filter-name>OpenSessionInView ...
spring2.5学习PPT 传智博客 01_全面阐释Spring及其各项功能 ... 30.Spring提供的CharacterEncoding和OpenSessionInView功能 31.使用Spring集成JPA 32.Struts+Spring+JPA集成 33.使用Spring集成Struts2 34.所有源码
使用 AOC 拦截器而不是过滤器进行 OpenSessionInView 处理 列出一个国家的城市和添加城市的可能性(bean 验证和自动检索 lat 和 lng 坐标) 安全 安全的 REST Web 服务 使用 CSRF 令牌 角度父状态的问题 有用的链接 ...
Spring的Ioc Spring的AOP , AspectJ Spring的事务管理 , 三大框架的整合 目录 1.1 Spring 框架学习路线:..........................................................................................................