spring2.0和hibernate3.0整合存在挺多问题,其中ASM.jar包的版本冲突暂且不说,就光一个OpenSessionInViewFilter就够恶心人了。今天终于把它搞定了。按照原始的事务声明和配置形式对于spring2.0+hibernate3.0+OpenSessionInVewFilter已经不生效了,因为spring2.0里面的OpenSessionInViewFilter的getSession方法中会对session的flushMode设定一个默认为NEVER的值,而这个值在hibernate3.0似乎是不能理解的。
所以一旦你使用默认形式去管理session就会出一个
Write operations are not allowed in read-only mode(FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
的异常。产生的原因就是和session的flushMode有关系,我们来看一下OpenSessionInViewFilter这个类里面的getSession方法
protected Session getSession(SessionFactory sessionFactory) throws DataAccessResourceFailureException {
Session session = SessionFactoryUtils.getSession(sessionFactory, true);
FlushMode flushMode = getFlushMode();
if (flushMode != null) {
session.setFlushMode(flushMode);
}
return session;
}
这里面FlushMode flushMode = getFlushMode(); 得到的flushMode就是NEVER然后再扔到session 里面当然不行喽,解决办法就是继承OpenSessionInViewFilter类,然后重写这个方法,加句 this.setFlushMode(FlushMode.AUTO);或者干脆把session里面直接扔个FlushMode.AUTO,然后再重写一个叫closeSession的方法,记住一定要重写,因为增加了flushMode以后要调用session.flush()才可以正常提交数据,其实重写closeSession就是为了加1句session.flush(),然后下面调用super.closeSession()方法就行了。
分享到:
相关推荐
这个压缩包“struts2.0.8+spring2.0+hibernate3.2”包含了这三个框架的特定版本,这将帮助开发者在构建基于Java的企业级应用程序时快速搭建环境。 **Struts2** 是一个用于构建企业级Web应用程序的开源MVC框架,它...
解决这个问题的方法有两种:一种是在 web.xml 中使用 Spring 提供的 OpenSessionInViewFilter,另一种是在 application.xml 中配置 OpenSessionInViewFilter。前者通用,后者只能用于 SpringMVC 结构中。 最后,...
3. Hibernate的配置文件(hibernate.cfg.xml)中,配置数据库连接、实体类映射等信息。Spring的配置文件中也需要配置SessionFactory,以便管理Hibernate的会话。 4. 在业务层(Service)和DAO层,使用Spring的注解...
1. **导入依赖库**:首先,你需要在项目中引入Spring的相关库,包括Core、ORM/DAO/Hibernate3、AOP和Web库。这些库包含了Spring框架的核心功能和对Hibernate的支持。 2. **配置dataSource和SessionFactory**:在...
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter <!-- ExtremeTable Excel/PDF 导出过滤器 --> <filter-name>eXtremeExport <filter-class>org.extremecomponents....
10. **延迟加载问题**:为了处理Hibernate的延迟加载问题,可以使用Spring的`OpenSessionInViewFilter`。这个过滤器确保在一次HTTP请求的整个生命周期内,Hibernate的Session保持打开状态,允许延迟加载在请求结束时...
Spring4.0、Struts2.3.15、Hibernate4.2.4、jQuery1.9.1涉及到了诸多开发时的细节:ModelDriven、Preparable 拦截器、编写自定义的类型转换器、Struts2 处理 Ajax、OpenSessionInViewFilter、迫切左外连接、Spring ...
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter <filter-name>openSessionInViewFilter <url-pattern>/* ``` 5. **运行测试** - **部署项目**:将项目部署到...
3. **整合Spring与Hibernate**: - 使用Spring提供的`OpenSessionInViewFilter`过滤器来管理Hibernate会话,确保每个HTTP请求对应一个会话。 - 在Spring的配置文件中定义Hibernate的SessionFactory,以及与之相关...
在`web.xml`中,Struts2的配置通过`StrutsPrepareAndExecuteFilter`进行,而Spring与Hibernate的集成则通过`OpenSessionInViewFilter`实现。这些配置保证了请求到达时,Struts2能正确处理请求,同时Spring能够管理和...
Struts、Spring 和 Hibernate 是三个著名的 Java 开发框架,它们分别负责不同的职责:Struts 主要处理 MVC(Model-View-Controller)架构中的控制层,Spring 提供了强大的依赖注入和事务管理,而 Hibernate 则是 ORM...
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter <filter-name>openSessionInViewFilter *.action <!-- Struts2核心过滤器 --> <filter-name>struts2 ...
这是Spring针对Hibernate的非JPA实现使用的`OpenSessionInViewFilter`的JPA版本。 #### 2. applicationContext.xml配置详解 `applicationContext.xml`是Spring的基本配置文件之一,主要用于配置数据源、JPA实体...
OpenSessionInViewFilter个人学习总结
OpenSessionInViewFilter OpenSessionInViewFilter OpenSessionInViewInterceptor OpenSessionInViewInterceptor OptimisticLockingFailureException OptionsTag OptionTag OptionWriter OracleLobHandler ...
在IT领域,特别是Java企业级应用开发中,Struts、Hibernate和Spring的集成是一个非常重要的主题,这三者的结合能够构建出稳定、高效且可扩展的Web应用程序。下面,我们将详细探讨如何在项目中实现Struts、Hibernate...
SSH2.0 配置日记记录了 Spring 2.5、Hibernate、Struts2.1、ConnectionPool 等技术栈的集成和配置过程,涉及到了多个知识点,包括 Spring 配置、Hibernate 配置、Struts2 配置、ConnectionPool 配置、数据库配置、...
本资源主要讲解了Spring框架的基础概念和应用,涵盖了面向接口编程、IOC/DI、AOP、Spring应用IOC/DI、Spring应用AOP、Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合、Spring JDBC面向接口编程等内容。 面向接口...
- **Hibernate 会话管理**:同样通过 `<filter>` 和 `<filter-mapping>` 配置了 `OpenSessionInViewFilter`,用于管理 Hibernate 的会话生命周期。`singleSession` 参数被设置为 `true` 表示使用单一会话模式,即每...
Spring3和Hibernate4的整合是构建高效、灵活且可维护的应用程序的关键步骤。下面,我们将深入探讨这两个框架的核心概念以及它们如何协同工作。 Spring3是Spring框架的一个重要版本,它提供了一个全面的编程和配置...