OpenSessionInViewFilter 的配置及作用

转载 2015年07月10日 18:41:03

Spring为我们解决Hibernate的Session的关闭与开启问题。 
Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数据时,由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常

(eg: org.hibernate.LazyInitializationException:(LazyInitializationException.java:42) 
 - failed to lazily initialize a collection of role: cn.easyjava.bean.product.ProductType.childtypes, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: cn.easyjava.bean.product.ProductType.childtypes, no session or session was closed)。

用来把一个Hibernate Session和一次完整的请求过程对应的线程相绑定。目的是为了实现"Open Session in View"的模式。例如: 它允许在事务提交之后延迟加载显示所需要的对象。


而Spring为我们提供的OpenSessionInViewFilter过滤器为我们很好的解决了这个问题。OpenSessionInViewFilter的主要功能是用来把一个Hibernate Session和一次完整的请求过程对应的线程相绑定。目的是为了实现"Open Session in View"的模式。例如: 它允许在事务提交之后延迟加载显示所需要的对象。
 OpenSessionInViewFilter 过滤器将 Hibernate Session 绑定到请求线程中,它将自动被 Spring 的事务管理器探测到。所以 OpenSessionInViewFilter 适用于 Service 层使用HibernateTransactionManager 或 JtaTransactionManager 进行事务管理的环境,也可以用于非事务只读的数据操作中。

<filter>
        <filter-name>Spring OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
     <init-param>
    
<!-- 
指定org.springframework.orm.hibernate3.LocalSessionFactoryBean在spring配置文件中的名称,默认值为sessionFactory
     如果LocalSessionFactoryBean在spring中的名称不是sessionFactory,该参数一定要指定,否则会出现找不到sessionFactory的例外
-->
     <param-name>sessionFactoryBean</param-name>
   <param-value>sessionFactory</param-value>
  </init-param> 
    </filter>
    <filter-mapping>
        <filter-name>Spring OpenSessionInViewFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

OpenSessionInViewFilter作用及配置

一、作用 Spring为我们解决Hibernate的Session的关闭与开启问题。 Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernat...
  • chengjiangbo
  • chengjiangbo
  • 2013年08月21日 19:29
  • 342

【Spring】--OpenSessionInViewFilter 的配置及作用

Hibernate为我们封装了对数据库的操作,可以通过实体映射来关联数据库。在加载数据时,Hibernate对关联对象、属性进行延迟加载,延迟加载可以提升性能,使用的时候才进行加载。但是这样就存在一个...
  • u013036278
  • u013036278
  • 2016年09月25日 16:55
  • 1637

OpenSessionInViewFilter的作用及原理

Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对...
  • ggibenben1314
  • ggibenben1314
  • 2015年05月31日 16:53
  • 4322

OpenSessionInViewFilter 的配置及作用

OpenSessionInViewFilter 的配置及作用
  • chaoren2011
  • chaoren2011
  • 2014年04月11日 23:11
  • 367

OpenSessionInViewFilter 的配置及作用

Spring为我们解决Hibernate的Session的关闭与开启问题。 Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Sessio...
  • johnstrive
  • johnstrive
  • 2010年03月24日 15:59
  • 642

【转载】OpenSessionInViewFilter作用及配置

OpenSessionInViewFilter作用及配置 一、作用 Spring为我们解决Hibernate的Session的关闭与开启问题。  Hibernate 允许对关...
  • iamkarl
  • iamkarl
  • 2011年05月10日 09:13
  • 394

OpenSessionInViewFilter作用及配置-懒加载

一、作用 Spring为我们解决Hibernate的Session的关闭与开启问题。 Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernat...
  • qq_29296595
  • qq_29296595
  • 2015年08月06日 13:03
  • 156

[转]OpenSessionInViewFilter作用及配置

一、作用 Spring为我们解决Hibernate的Session的关闭与开启问题。 Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate ...
  • zlbcdn
  • zlbcdn
  • 2013年05月14日 13:25
  • 332

关于SpringOpenSessionInViewFilter的配置及处理方案

spring 4的SpringOpenSessionInViewFilter的配置及处理方案
  • wanggangabc111
  • wanggangabc111
  • 2016年08月12日 15:23
  • 615

在web.xml中配置openSessionInView的使用

应用中使用了OpenSessionInViewFilter或者OpenSessionInViewInterceptor,所有打开的session会被保存在一个线程变量里   这主要是为了实现Hibe...
  • itpinpai
  • itpinpai
  • 2012年11月03日 16:55
  • 5692
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenSessionInViewFilter 的配置及作用
举报原因:
原因补充:

(最多只允许输入30个字)