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>
分享到:
相关推荐
#### OpenSessionInViewFilter的作用 在Spring与Hibernate结合使用的项目中,为了确保Session能够在整个HTTP请求-响应周期内保持打开状态,从而支持Lazy Loading,我们通常会使用`OpenSessionInViewFilter`。这个...
`OpenSessionInViewFilter`是Spring为配合Hibernate设计的一个过滤器,其主要作用是在Web请求处理过程中打开并维持一个Hibernate Session,直到视图渲染完成。这样做的好处在于能够确保在整个请求处理过程中Session...
`CharacterEncodingFilter`的作用就是确保请求和响应的字符编码统一为指定的格式,通常设置为UTF-8,避免因为编码问题导致的数据丢失或显示错误。通过在Web应用的配置文件(如web.xml)中添加该过滤器,可以全局设定...
为了解决这个问题,我们可以使用 Spring 提供的一个支持类OpenSessionInViewFilter,这个类可以在发起一个页面请求时打开 Hibernate 的 Session,并保持这个 Session 的生命周期,直到这个请求结束。这样可以确保 ...
综上所述,Spring监听器和过滤器是Spring Web框架中不可或缺的部分,它们在处理Web请求、管理事务、统一编码、日志记录以及环境配置等方面发挥着重要作用。理解并熟练掌握这些技术,对于构建高质量的Web应用程序至关...
本文将围绕SSH框架整合过程中所需的几个关键类进行详细解析,旨在帮助读者更好地理解这些类的作用及其在框架整合中的应用。 #### 二、知识点详解 ##### 1. `org.springframework.web.context....
2. **OpenSessionInViewFilter**:通过Web容器的过滤器(filter)来实现。 #### 异常原因 当使用Open Session In View模式时,如果Session的Flush Mode被设置为NEVER,并且尝试执行写操作(如更新或删除),就会触发...
OpenSessionInViewFilter的主要作用是在HTTP请求的生命周期内保持一个Hibernate的Session,确保在视图层(例如JSP页面)也能访问到数据库会话,解决了“懒加载”问题,避免了因为请求结束而关闭Session导致的数据...
- **线程绑定**:`OpenSessionInViewFilter`的主要作用是将`HibernateSession`绑定到当前请求的线程中。 - **事务管理**:当服务层使用`HibernateTransactionManager`或`JtaTransactionManager`进行事务管理时,该...
首先,我们需要了解这三大框架的基本作用: - **Struts2**:是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,主要用于处理用户的请求和控制应用程序流程。 - **Spring**:是一个全面的企业级应用开发...
- 利用CharacterEncodingFilter和OpenSessionInViewFilter解决编码问题。 通过以上内容的学习,开发者可以深入理解Spring 2.5的核心概念,掌握其在实际开发中的应用,从而提高工作效率和代码质量。
`Open Session In View`的主要作用是在Web请求的开始阶段打开`Hibernate session`,并在请求结束时自动关闭该session。这样做的好处在于,可以确保在整个请求处理过程中session始终处于可用状态,使得在视图(View)层...
在SSH配置中,SSH指的是Struts2、Spring和Hibernate三个开源框架的组合,...配置文件的每个部分都有其特定作用,共同构成了一个完整的Web应用架构。在实际项目中,根据具体需求,这些配置可能会有所不同或更加复杂。
在Java Web开发中,SSH(Struts2、...综上所述,SSH整合是一个涉及多个层次和组件的过程,需要细心配置并理解每个部分的作用,以实现高效、稳定的Web应用。在实际开发中,还需要考虑错误处理、安全性和性能优化等方面。
这个过滤器的作用是在Web请求开始时开启一个新的Hibernate Session,然后在请求结束时关闭Session,确保在整个请求处理过程中,Session都是打开的,从而允许延时加载操作在事务结束后完成。 在`web.xml`中配置`...
总的来说,搭建SSH框架涉及多个配置文件的修改和组件的整合,理解每个步骤的作用和配置的含义对于有效地开发和维护Java Web应用至关重要。在实际操作中,还需要根据具体需求和环境进行适当的调整。
配置中的*.do表示这个过滤器只作用于以.do结尾的请求。 知识点三:@OneToMany注解和@ManyToOne注解 在描述中提到了使用@OneToMany和@ManyToOne注解来配置一对多的关系。@OneToMany标记了拥有关系集合的类,而@...
这里定义了一个路径为“/pet”的Action,名为“petForm”,参数为“operate”,作用域为“request”。 #### 3. **Spring配置文件** —— Spring的bean定义 Spring的配置文件通常位于`WEB-INF`目录下,如`...
它们分别在MVC架构、依赖注入与业务逻辑管理、对象关系映射等方面发挥着重要作用。通过整合这三大框架,可以构建出功能强大且灵活的Web应用系统。本文将详细介绍如何在MyEclipse 7.0环境下,基于Java EE 1.4标准和...