`

spring 事务 不能rollback的问题终于解决了

阅读更多

项目中虽然配置了事务,但是总感觉没起作用。

尤其是我在测试service方法时,总是报出一个异常  transaction not successfully started .

我开始以为是事务配置的问题,经过反复的检查,发现没错。

 

开始在网上漫无目的的搜索解决方案, 在一片帖子中看到,有人说 使用SessionFactory.getCurrentSession爆出了这个异常,解决办法是改为 SessionFactory.openSession() ,这个倒是给了我灵感。

于是我去检查 hibernateDao(项目中封装的唯一dao),结果发现 session 都是通过 HibernateDaoSupport.getSession() 得到的,而save,update,delete 等是通过get HibernateTemplate() 来实现的,根本没有涉及到 SessionFactory.本来已经放弃这个方法了。一不小心在 save方法中发现了一行代码

this.getSession().beginTransaction().commit();  

当时就震惊了,这句话根本就没用嘛,估计以前没配置事务时 自己写着玩的。赶紧把这个注掉,又在 commit()方法中发现了这行代码,注掉。 

 然后运行测试,通过了,事务正常回滚了。

总结一下,在spring使用了声明式事务 ,就不应该在 拦截的 类中 自己维护事务。

分享到:
评论

相关推荐

    spring事务与数据库操作

    ### Spring事务与数据库操作 #### 一、Spring的声明式事务管理 在现代软件开发中,事务处理是非常关键的一部分,特别是在涉及多个数据操作时。Spring框架提供了强大的事务管理能力,可以方便地集成到应用程序中。...

    Spring事务原理、Spring事务配置的五种方式

    Spring事务管理创造性的解决了很多以前要用重量级的应用服务器才能解决的事务问题,那么其实现原理一定很深奥吧?可是如果读者仔细研究了Spring事务管理的代码以后就会发现,事务管理其实也是如此简单的事情。这也...

    spring事务案例分析.zip

    7. **案例分析**:"SPRING事务管理案例分析.docx"很可能包含了具体的项目实例,详细讲解了如何在Spring项目中配置和使用事务管理,以及如何解决实践中遇到的问题。而"studyspring"可能是源代码目录,包含了实现这些...

    Spring事务管理的jar包

    总的来说,Spring事务管理通过`spring-tx-3.2.0.RELEASE.jar`为开发者提供了强大且灵活的事务处理能力,无论是在简单应用还是复杂的分布式系统中,都能有效地确保数据的一致性。了解并熟练掌握Spring事务管理,对于...

    Spring事务小demo

    这个名为"Spring事务小demo"的项目提供了一个实践示例,帮助开发者了解Spring事务处理的基本概念和用法。 首先,Spring事务管理是Spring框架的核心特性之一,它允许我们以声明式或编程式的方式管理事务。声明式事务...

    spring学习事务源码

    本文将深入探讨Spring事务管理的源码,理解其背后的实现机制。 首先,Spring事务管理有两种主要模式:编程式事务管理和声明式事务管理。编程式事务管理通过调用`PlatformTransactionManager`接口提供的方法进行显式...

    实验 spring 声明事务

    Spring 提供了声明式事务管理,允许开发者在不编写事务管理代码的情况下实现事务控制,极大地简化了事务处理。 实验环境主要包括 Eclipse 或 MyEclipse 开发工具,以及 Spring 4.0 及以上版本,JDK 1.7 及以上版本...

    Spring事务传播机制.docx

    当我们在使用 Spring 所提供的事务功能时,如果是仅仅处理单个的事务,是比较容易把握事务的提交与回滚,不过一旦引入嵌套事务后,多个事务的回滚和提交就会变得复杂起来,各个事务之间是如何相互影响的,是一个值得...

    spring 事务基于注解模式

    Spring事务管理分为编程式和声明式两种。编程式事务管理通过编程的方式(如使用`TransactionTemplate`或直接调用`PlatformTransactionManager`)来控制事务的开始、提交、回滚等操作。而声明式事务管理则是在配置...

    Spring事务管理A方法内部调用B方法的回滚问题测试代码

    在Spring框架中,事务管理是核心特性之一,用于确保数据操作的一致性和完整性。当一个方法(A方法)内部调用另一个方法(B方法)时,可能会遇到事务控制...这个示例代码对于理解和调试Spring事务管理的问题非常有帮助。

    Spring事务类型祥解

    在Spring框架中,事务管理是实现业务逻辑时不可或缺的一部分,它确保了数据的一致性和完整性。本篇文章将详细解析Spring中的事务类型,帮助你更好地理解和应用这些知识。 首先,Spring支持两种事务管理方式:编程式...

    spring 事务管理的理解

    Spring 框架是Java开发中...理解并熟练掌握Spring事务管理,对于提升应用程序的稳定性和可靠性至关重要。在实际开发中,结合声明式事务管理、事务传播行为、隔离级别和回滚规则,可以有效地确保数据的完整性和一致性。

    Spring事务优缺点及使用详解.docx

    Spring事务管理提供了统一的事务处理模型,使得开发者无需关注具体数据库访问技术的事务细节,简化了事务控制代码,提高了代码的可读性和可维护性。无论是使用注解还是AOP配置,都能有效地管理和协调事务,确保应用...

    Spring事务与Java事务比较

    对比 Java 中的事务管理,通常指的是 JDBC 的事务管理,需要手动调用 Connection 对象的 commit() 和 rollback() 方法。这种方式完全由开发者控制,灵活性高但容易出错,且事务管理代码会与业务代码混合在一起。 ...

    Hibernate缓存与spring事务详解

    **标题:“Hibernate缓存与Spring事务详解”** 在IT领域,尤其是Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作。而Spring框架则以其全面的功能,包括依赖注入、AOP(面向切...

    Spring事务管理配置文件问题排查

    为了彻底解决问题,首先检查事务管理的配置文件,确认`<tx:annotation-driven>`元素已经正确配置,同时检查数据库连接池配置,确保事务管理器与数据库的交互没有问题。其次,确保所有的数据库操作都在适当的事务边界...

    spring事务管理

    ### Spring事务管理详解 #### 一、事务管理基础概念 在深入探讨Spring事务管理之前,我们需要先理解什么是事务。事务可以被定义为一系列的操作集合,这些操作作为一个整体被提交或回滚。简单来说,事务就是一个不...

    spring-tx事务管理实例

    Spring事务管理是企业级Java应用中不可或缺的一部分,它确保了数据的一致性和完整性,尤其是在多线程和分布式环境中。本实例将深入探讨Spring事务管理的实现与应用。 首先,Spring事务管理分为编程式事务管理和声明...

    Spring的事务管理小案例

    在本文中,我们将深入探讨Spring框架中的事务管理。Spring是一个广泛应用的Java企业级应用开发框架,它提供...如果你想要深入了解,可以参考提供的博客链接或其他相关资料,进一步学习Spring事务管理的细节和最佳实践。

Global site tag (gtag.js) - Google Analytics