`

spring事务与OpenSessionInView Filter的矛盾

阅读更多

事务与OpenSessionInView Filter天生就是一对矛盾!<wbr></wbr>
主要还在于一个事务粒度的问题,如何才能真正的让OpenSessionInView Filter与事务真正共存呢?
基于google的资料,有四个解决方法,但都没有彻底解决,其问题还是粒度?
如:扩展OpenSessionInView Filer对象,把sessionFlushMode设为Commit,就意味着事务是整个request层,最终在action为了展示而进行弄脏了数据导致数据被更改。如果默认,FlushMode.NEVER模式下,操作数据会报read.only异常。
如果把dao方法,直接flush掉,那就意味着事务粒度只能加载到dao层,在service层的二个dao对数据库操作,事务不同步,如一个dao操作成功另一个失败。如何解决呢?
思路应该是这样:OpenSessionlnVierFilter仍然存在,或者在service层增加一个aop,这个aop表示在操作service层函数进入时把session设为commit,执行完毕业进行session.commit,这样可以解决。找了好多资料,没有一个现存的解决方案,只好自己动手写个aop,事务管理。

花了一天,还没有搞出一个结果。继续看事务,了解如何在需要求进行事务提交的时候进行session FlushMode的更改。如何通过spring可配置方式进行,直接可编程肯定是可以的。

分享到:
评论
3 楼 sys53 2009-07-10  
事务的配置有问题。

一种方法是:采用service继续事务接口

别一种方法是:切片进去。
2 楼 黑猪王子 2009-07-09  
具体怎么解决的?
1 楼 sys53 2007-09-04  
问题已经解决!spring配置问题,网上的一个配置以及一本spring书上的配置不正确,看了aop的测试后发现配置确实存在,按在最新的配置,事务是可以的。

相关推荐

    Struts Spring Hibernate 整合 OpenSessionInView 例子

    为了练手培训,给大家准备的 Open Session In View 的简单例子,纯代码,大家可以参考,其中主要说了六部分内容: ...5.通过 spring aop(aspectJ) 声明事务 6.通过formular 映射参数表,指定两个死的变量

    Spring hibernate opensessioninview

    ### Spring + Hibernate OpenSessionInView 模式的理解和应用 在Java Web开发中,Spring与Hibernate作为两个重要的框架,经常被一起使用来实现业务逻辑与数据持久化的处理。而在使用这两个框架时,为了更好地管理...

    Spring提供的CharacterEncoding和OpenSessionInView功能

    Spring框架是Java开发中不可或缺的一部分,它为开发者提供了丰富的功能,包括依赖注入、面向切面编程、事务管理等。在处理Web应用时,Spring提供了一些关键特性,如`CharacterEncodingFilter`和`...

    第30讲--Spring提供的CharacterEncoding和OpenSessionInView功能

    同时,需要注意的是,OpenSessionInView模式虽然方便,但也会带来潜在的问题,如事务边界不清晰和会话泄漏。因此,在实际应用中,应结合具体需求谨慎使用,并考虑使用更现代的解决方案,如Spring Data JPA的...

    Spring的学习笔记

    - **事务配置**:未配置事务可能导致openSessionInView模式下异常。 - **中文乱码**:需要配置字符编码以解决乱码问题。 **SSH整合的jar包** - **Struts2,Hibernate,Spring**:确保引入了所有必要的jar包,包括...

    struts spring hibernate面试题

    - **openSessionInView**:通过在 web 层设置一个 filter 来保持 session 打开状态,从而支持整个请求周期内的延迟加载。 #### 8. Spring 事务管理方式及特性 - **管理方式**: - **声明式事务**:通过 XML 或...

    struts2+hibernate+spring

    Struts2、Hibernate与Spring(通常简称为SSH)是Java Web开发中的三个流行框架。它们的结合可以极大地提高Web应用的开发效率和可维护性。具体来说: - **Struts2**:用于构建MVC架构的应用程序,它负责处理用户的...

    Open_Session_In_View详解.doc

    &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;param-name&gt;singleSession &lt;param-value&gt;true &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;...

    Spring框架1

    7. **Spring事务管理**: - **声明式事务**:通过配置元数据(如XML或注解)来声明事务边界。 - **编程式事务**:直接在代码中调用事务管理API来管理事务。 - **隔离级别**:包括读未提交(READ UNCOMMITTED)、...

    struts+spring+hibernate面试题.doc

    Spring事务管理 - **事务类型**:Spring支持声明式事务和编程式事务。 - **隔离级别**:定义了事务在执行时与其他事务之间的隔离程度,包括`DEFAULT`、`READ_UNCOMMITTED`、`READ_COMMITTED`、`REPEATABLE_READ`和...

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

    在实际项目中,还需要在web.xml中配置DispatcherServlet、Struts2的Filter以及Spring的ContextLoaderListener。同时,需要编写相关的配置文件,如struts.xml、hibernate.cfg.xml、applicationContext.xml,以完成各...

    struts+spring+hibernate面试题

    - Spring的HibernateTemplate提供了便捷的数据库操作方法,如`save()`, `update()`, `delete()`和`find()`等,并可以结合声明式事务管理,简化事务控制。 以上就是关于Struts、Spring和Hibernate面试题的详细解析...

    收集的struts+spring+hibernate面试题.doc

    - **openSessionInView**:通过在 Web 层添加一个 Filter 来维持 Session 的打开状态,从而支持整个请求过程中的延迟加载。 #### 8. Spring 的事务管理 - **事务管理方式**:支持声明式事务管理和编程式事务管理。...

    马士兵Spring学习笔记.docx

    #### 示例:OpenSessionInView Filter - **作用**:保持一个持久化上下文与HTTP请求的生命周期同步,以解决懒加载异常问题。 - **解决方案**:通过在Struts2配置文件中配置`OpenSessionInViewFilter`来实现。 ### ...

    SSH全注解环境搭建

    - 配置Spring事务管理器: ```xml &lt;bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"&gt; ``` - 配置Hibernate SessionFactory: ```xml ...

    ssh配置总结

    - `spring-tx-*.jar`:事务管理支持。 - `spring-context-*.jar`:Spring的核心上下文支持。 另外还需要添加其他依赖库如`common-pool.jar`用于数据库连接池管理,以及`asm-2.2.3.jar`等用于支持AOP等功能。 **2. ...

    OA项目SSH整合框架

    一,集成 Spring 与 Hibernate 1,配置SessionFactory 1,配置 ---------------------- applicationContext.xml ------------------------ &lt;!-- 配置SessionFactory(整合Hibernate) --&gt; ...

    configuration

    &lt;filter-name&gt;openSessionInView&lt;/filter-name&gt; &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt; &lt;!--...--&gt; &lt;/filter&gt; ``` 此过滤器保持一个打开的Hibernate ...

    SSH面试题

    #### 八、Spring事务管理 **问题:** Spring支持几种事务管理方式?事务的隔离级别和传播行为有哪些? - **事务管理方式**: 包括声明式事务管理和编程式事务管理。 - **隔离级别**: 包括`DEFAULT`、`READ_...

    搭建SSH框架总结.doc

    同时,为了提高性能和减少耦合,通常会使用Spring的AOP功能进行事务管理,使用Spring MVC替换Struts作为表现层框架,以及使用MyBatis等轻量级ORM框架替代Hibernate。总之,理解并熟练掌握SSH框架的搭建与配置,对于...

Global site tag (gtag.js) - Google Analytics