`
佳佳1212
  • 浏览: 3880 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

OpenSessionInViewFilter详细使用说明

阅读更多

这里我们要弄清楚的是为什么要使用OpenSessionInViewFilter?我们是到到这个一般是解决延迟加载出现的问题。那么为什么会有问题呢,首先明确以下几点

  • session的开闭,Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数据时,由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常。(这里明确下延迟加载,简单说就是当我们没有真正使用实体的属性,并不会触发查询hql,例如我们用到了用户实体的名称时候,才会真正操作数据库去查询)
  • spring提供的OpenSessionInViewFilter就解决了此问题。该filter会将session绑定至当前请求的线程上,这样只要是在当前请求的生命周期内,可以随时访问session,只需要在项目的web.xml文件中增加如下配置即可

 

	<filter> 
		<filter-name>OpenSessionInViewFilter</filter-name> 
		<filter-class> 
		org.springframework.orm.hibernate4.support.OpenSessionInViewFilter 
		</filter-class> 
		<init-param> 
			<param-name>sessionFactoryBeanName</param-name> 
			<param-value>sessionFactory</param-value> 
	   </init-param> 
	   <init-param> 

            <param-name>singleSession</param-name> 
            <param-value>true</param-value>            
        </init-param> 
        <init-param> 
			<param-name> flushMode </param-name> 
    		<param-value>COMMIT</param-value>         
        </init-param> 
	</filter> 
	
	
	<filter-mapping>
		<filter-name>OpenSessionInViewFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>  
  • 简单说下

FlushMode有5个值可选

 

Always:任何代码都会Flush
AUTO:默认方式–自动
Commit:COMMIT时
Never:始终不
MANUAL:手动方式

主要是配置何时与数据库同步,主要是因为hibernate的缓存机制,例如一个实体在缓存中存在,就不会查询据库 详细参考http://blog.csdn.net/lssssss/article/details/6839633

 

以上说明有个更详细文章http://blog.csdn.net/a19881029/article/details/7916702

分享到:
评论

相关推荐

    关于OpenSessionInViewFilter的学习

    通过阅读《OpenSessionInViewFilter说明.doc》文档,你可以更深入地了解其内部实现细节、配置方法以及如何在实际项目中合理使用。这个文档应该包含了OpenSessionInViewFilter的源码分析、配置示例以及常见问题的解答...

    OpenSessionInViewFilter

    OpenSessionInViewFilter个人学习总结

    struts2.3+spring3.1.2+hibernate4.1.6 配置说明

    在这个配置说明中,开发者使用的是Struts2.3、Spring3.1.2和Hibernate4.1.6的版本。 首先,我们需要了解这三大框架的基本作用: - **Struts2**:是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,...

    SSH框架ajax获取的json格式数据处理过程

    在本文中,我们将详细讲解如何使用 SSH 框架中的 Ajax 获取的 JSON 格式数据处理过程,并且实现菜单联动下拉框的功能。 一、Ajax 中 response 返回的数据是一个二维数组 在 Ajax 中,response 返回的数据是一个二...

    懒加载异常解决.docx

    通过配置OpenSessionInViewFilter,可以在很大程度上解决懒加载异常的问题,尤其是在Java Web应用中使用Hibernate等ORM框架时。当然,还需要根据实际项目的具体情况,灵活调整和优化配置,以达到最佳的性能和稳定性...

    马士兵Spring课堂笔记(超级详细版).pdf

    我们可以通过配置XML文件和注解来实现整合,并使用opensessionInviewfilter来解决会话问题。 Spring JDBC面向接口编程 本节讲解了如何使用Spring JDBC来实现面向接口编程。我们可以通过配置XML文件和注解来实现DAO...

    Spring hibernate opensessioninview

    2. **参数说明**: - `singleSession`:如果设置为`true`,则表明启用OpenSessionInView模式,即在请求处理期间始终维持一个打开的Session。如果设置为`false`,则不启用此模式。 - `&lt;url-pattern&gt;`:定义哪些URL...

    SSH项目整合示例【OpenSessionInView】所用到的jar包

    **Hibernate** 是一个对象关系映射(ORM)工具,它将数据库操作抽象为对象,使得开发者可以使用面向对象的方式进行数据操作。Hibernate提供了Session和Transaction API,用于执行CRUD操作。OpenSessionInView(OSIV...

    jar包(struts2.0.8+spring2.0+hibernate3.2)

    在使用这个压缩包时,开发者需要按照一定的顺序进行配置:首先设置Hibernate的连接信息和实体映射,然后在Spring中配置数据源、事务管理器和Hibernate SessionFactory,接着配置Struts2的动作类、结果类型和拦截器。...

    使用Spring引起的错误

    下面分别给出使用OpenSessionInViewInterceptor和OpenSessionInViewFilter的配置示例: ##### OpenSessionInViewInterceptor配置 ```xml class="org.springframework.orm.hibernate3.support....

    spring监听器

    ### Spring监听器与过滤器详解...- **Spring Web环境下的监听器和过滤器**:在Spring MVC环境中,除了上述提到的OpenSessionInViewFilter和CharacterEncodingFilter,还有多种其他类型的过滤器和监听器可以使用,例如`...

    过滤器对于session周期的控制

    当使用其他框架(如Struts2)时,需要注意`OpenSessionInViewFilter`与这些框架中过滤器的顺序。例如,在上面的例子中,`OpenSessionInViewFilter`被配置在`webwork`过滤器之前,这是为了确保在处理Struts2相关的...

    hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法

    除了使用 OpenSessionInViewFilter 之外,我们还可以使用 Hibernate 的 initialize 方法来强制加载关联数据。例如: ```java SetRepayment setRepayment = setRepaymentDao.get(setRepaymentId); if (setRepayment ...

    保险公司大客户管理系统架构设计说明书

    ### 保险公司大客户管理系统架构设计说明书 #### 一、引言 随着信息技术的发展,保险公司面临着越来越多的数据处理需求,特别是对于大客户的管理。为了提高管理效率和服务质量,许多保险公司选择使用基于Struts、...

    Spring提供的CharacterEncoding和OpenSessionInView功能

    在处理Web应用时,Spring提供了一些关键特性,如`CharacterEncodingFilter`和`OpenSessionInViewFilter`,它们对于解决特定问题至关重要。 首先,让我们深入了解一下`CharacterEncodingFilter`。在Web应用中,字符...

    SSH搭建详细步骤

    本文将详细地介绍如何从零开始搭建一个完整的SSH框架,并为初学者提供一套可参照的实践指南。 #### 二、准备工作 1. **安装Eclipse或IntelliJ IDEA**:作为开发环境的基础工具。 2. **安装JDK**:确保系统已经正确...

    SSH2.0配置日记

    在 OpenSessionInViewFilter 中,需要配置 Hibernate 的 Session 管理,以便实现 Hibernate 的 Session 的打开和关闭。 9. web.xml 配置 在 web.xml 文件中,需要配置 Servlet 监听器、上下文变量、Filter 等,...

    Sping 事务管理.doc

    OpenSessionInViewFilter解决Web应用程序的问题

Global site tag (gtag.js) - Google Analytics