`
byduke
  • 浏览: 32211 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

hibernate3+spring2.0 + OpenSessionInViewFilter

阅读更多
  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+Spring+Hibernate搭建全解

    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter <filter-name>openSessionInViewFilter <url-pattern>/* ``` 5. **运行测试** - **部署项目**:将项目部署到...

    struts2 spring hibernate整合要点、注意点

    <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter <filter-name>openSessionInViewFilter *.action <!-- Struts2核心过滤器 --> <filter-name>struts2 ...

    SPRING API 2.0.CHM

    OpenSessionInViewFilter OpenSessionInViewFilter OpenSessionInViewInterceptor OpenSessionInViewInterceptor OptimisticLockingFailureException OptionsTag OptionTag OptionWriter OracleLobHandler ...

    SSH2.0配置日记

    SSH2.0 配置日记记录了 Spring 2.5、Hibernate、Struts2.1、ConnectionPool 等技术栈的集成和配置过程,涉及到了多个知识点,包括 Spring 配置、Hibernate 配置、Struts2 配置、ConnectionPool 配置、数据库配置、...

    spring框架中常用的配置

    - **Spring2.0相关库**: - AOP Libraries - Core Libraries - Persistence Core Libraries - Web Libraries - **Hibernate3.0相关库**: - Core Libraries - Advanced Support Libraries - **其他库**: - ...

    javaSSH框架搭建配置

    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter <filter-name>lazy *.do <filter-name>lazy *.jsp <filter-name>lazy <url-pattern>/dwr/* ``` - `<filter>`...

Global site tag (gtag.js) - Google Analytics