`
ayumi11111
  • 浏览: 24073 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

OpenSessionInViewFilter 作用

阅读更多

Spring为我们解决最让人头痛的难题之一,Hibernate的Session的关闭与开启问题。 
Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数据时,由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常。而Spring为我们提供的OpenSessionInViewFilter过滤器为我们很好的解决了这个问题。OpenSessionInViewFilter的主要功能是使每个请求过程绑定一个 Hibernate Session,即使最初的事务已经完成了,也可以在 Web 层进行延迟加载的操作。OpenSessionInViewFilter 过滤器将 Hibernate Session 绑定到请求线程中,它将自动被 Spring 的事务管理器探测到。所以 OpenSessionInViewFilter 适用于 Service 层使用HibernateTransactionManager 或 JtaTransactionManager 进行事务管理的环境,也可以用于非事务只读的数据操作中

 

       <filter>
                <filter-name>OpenSessionInViewFilterfilter-name>   
                <filter-class>   
                         org.springframework.orm.hibernate3.support.OpenSessionInViewFilter 
                </filter-class>   
                <!-- singleSession默认为true,若设为false则等于没用OpenSessionInView -->   
                <init-param>   
                        <param-name>singleSession<param-name>  
                        <param-value>trueparam-value>   
                </init-param>   
        </filter>   
        <filter-mapping>   
                <filter-name>OpenSessionInViewFilter</filter-name>
                <url-pattern>*</url-pattern>   
        </filter-mapping>   
   
        <!--Spring Context listener-->   
        <listener>   
                <listener-class>   
                         org.springframework.web.context.ContextLoaderListener    
                </listener-class>   
        </listener>   
   
<!--让spring知道事务管理的bean所在-->   
     <context-param>    
        <param-name>contextConfigLocation</pram-name>    
        <param-value>/WEB-INF/applicationContext*.xml</pram-value> 
     </context-param>
 

 

分享到:
评论

相关推荐

    过滤器对于session周期的控制

    #### OpenSessionInViewFilter的作用 在Spring与Hibernate结合使用的项目中,为了确保Session能够在整个HTTP请求-响应周期内保持打开状态,从而支持Lazy Loading,我们通常会使用`OpenSessionInViewFilter`。这个...

    Spring hibernate opensessioninview

    `OpenSessionInViewFilter`是Spring为配合Hibernate设计的一个过滤器,其主要作用是在Web请求处理过程中打开并维持一个Hibernate Session,直到视图渲染完成。这样做的好处在于能够确保在整个请求处理过程中Session...

    Spring提供的CharacterEncoding和OpenSessionInView功能

    `CharacterEncodingFilter`的作用就是确保请求和响应的字符编码统一为指定的格式,通常设置为UTF-8,避免因为编码问题导致的数据丢失或显示错误。通过在Web应用的配置文件(如web.xml)中添加该过滤器,可以全局设定...

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

    为了解决这个问题,我们可以使用 Spring 提供的一个支持类OpenSessionInViewFilter,这个类可以在发起一个页面请求时打开 Hibernate 的 Session,并保持这个 Session 的生命周期,直到这个请求结束。这样可以确保 ...

    spring监听器

    综上所述,Spring监听器和过滤器是Spring Web框架中不可或缺的部分,它们在处理Web请求、管理事务、统一编码、日志记录以及环境配置等方面发挥着重要作用。理解并熟练掌握这些技术,对于构建高质量的Web应用程序至关...

    SSH框架整合所需类class.txt

    本文将围绕SSH框架整合过程中所需的几个关键类进行详细解析,旨在帮助读者更好地理解这些类的作用及其在框架整合中的应用。 #### 二、知识点详解 ##### 1. `org.springframework.web.context....

    使用Spring引起的错误

    2. **OpenSessionInViewFilter**:通过Web容器的过滤器(filter)来实现。 #### 异常原因 当使用Open Session In View模式时,如果Session的Flush Mode被设置为NEVER,并且尝试执行写操作(如更新或删除),就会触发...

    我的智囊团(SSH)_04_开发提问及回复功能_上

    OpenSessionInViewFilter的主要作用是在HTTP请求的生命周期内保持一个Hibernate的Session,确保在视图层(例如JSP页面)也能访问到数据库会话,解决了“懒加载”问题,避免了因为请求结束而关闭Session导致的数据...

    spring框架登录初始化数据与struct2权限设置等相关知识

    - **线程绑定**:`OpenSessionInViewFilter`的主要作用是将`HibernateSession`绑定到当前请求的线程中。 - **事务管理**:当服务层使用`HibernateTransactionManager`或`JtaTransactionManager`进行事务管理时,该...

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

    首先,我们需要了解这三大框架的基本作用: - **Struts2**:是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,主要用于处理用户的请求和控制应用程序流程。 - **Spring**:是一个全面的企业级应用开发...

    spring2.5学习PPT 传智博客

    - 利用CharacterEncodingFilter和OpenSessionInViewFilter解决编码问题。 通过以上内容的学习,开发者可以深入理解Spring 2.5的核心概念,掌握其在实际开发中的应用,从而提高工作效率和代码质量。

    Open_Session_In_View详解.doc

    `Open Session In View`的主要作用是在Web请求的开始阶段打开`Hibernate session`,并在请求结束时自动关闭该session。这样做的好处在于,可以确保在整个请求处理过程中session始终处于可用状态,使得在视图(View)层...

    SSH配置模板[参照].pdf

    在SSH配置中,SSH指的是Struts2、Spring和Hibernate三个开源框架的组合,...配置文件的每个部分都有其特定作用,共同构成了一个完整的Web应用架构。在实际项目中,根据具体需求,这些配置可能会有所不同或更加复杂。

    SSH整合环境 配置

    在Java Web开发中,SSH(Struts2、...综上所述,SSH整合是一个涉及多个层次和组件的过程,需要细心配置并理解每个部分的作用,以实现高效、稳定的Web应用。在实际开发中,还需要考虑错误处理、安全性和性能优化等方面。

    Spring与Web整合实例

    这个过滤器的作用是在Web请求开始时开启一个新的Hibernate Session,然后在请求结束时关闭Session,确保在整个请求处理过程中,Session都是打开的,从而允许延时加载操作在事务结束后完成。 在`web.xml`中配置`...

    搭建SSH框架步骤

    总的来说,搭建SSH框架涉及多个配置文件的修改和组件的整合,理解每个步骤的作用和配置的含义对于有效地开发和维护Java Web应用至关重要。在实际操作中,还需要根据具体需求和环境进行适当的调整。

    错误及解决方案.pdf

    配置中的*.do表示这个过滤器只作用于以.do结尾的请求。 知识点三:@OneToMany注解和@ManyToOne注解 在描述中提到了使用@OneToMany和@ManyToOne注解来配置一对多的关系。@OneToMany标记了拥有关系集合的类,而@...

    SSH整合的配置文件详解

    这里定义了一个路径为“/pet”的Action,名为“petForm”,参数为“operate”,作用域为“request”。 #### 3. **Spring配置文件** —— Spring的bean定义 Spring的配置文件通常位于`WEB-INF`目录下,如`...

    struts2 spring hibernate整合要点、注意点

    它们分别在MVC架构、依赖注入与业务逻辑管理、对象关系映射等方面发挥着重要作用。通过整合这三大框架,可以构建出功能强大且灵活的Web应用系统。本文将详细介绍如何在MyEclipse 7.0环境下,基于Java EE 1.4标准和...

Global site tag (gtag.js) - Google Analytics