`
blue2048
  • 浏览: 182729 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring PROPAGATION_REQUIRES_NEW 和 PROPAGATION_NESTED

阅读更多
   在开spring源码的时候注意到PROPAGATION_REQUIRES_NEW 和 PROPAGATION_NESTED两种传播机制的是容易混淆的。
   查阅了一些文章后,发现二者的区别主要在于以下两点
   1. 开启事务的多少,PROPAGATION_REQUIRES_NEW会开启很多事务,外部事务挂起,里面的事务独立执行,对性能的损耗较大。PROPAGATION_NESTED为父子事务,实际上是借助jdbc的savepoint实现的,属于同一个事物。
   2. PROPAGATION_NESTED的回滚可以总结为,子事务回滚到savepoint,父事务可选择性回滚或者不不滚;父事务回滚子事务一定回滚。

   附上一片比较不错的文章供大家参考,http://www.iteye.com/topic/35907
分享到:
评论

相关推荐

    spring基础学习介绍

    例如,PROPAGATION_REQUIRES_NEW 和 PROPAGATION_NESTED的区别在于前者创建完全独立的新事务,而后者创建的是依赖于外部事务的子事务。在PROPAGATION_NESTED中,子事务的提交或回滚与外部事务紧密关联。 另外,当...

    spring事物管理

    实际上,任何PROPAGATION_REQUIRED或PROPAGATION_REQUIRES_NEW都可以处理方法的嵌套调用。当两个方法都在同一事务范围内运行时,它们的行为与PROPAGATION_REQUIRED相同,它们将共享同一事务,确保所有操作要么全部...

    深入理解Spring事务的传播行为

    当`ServiceB.methodB`的传播级别设置为`PROPAGATION_REQUIRES_NEW`时,无论`ServiceA.methodA`是否在事务中,`ServiceB.methodB`都会启动一个新的独立事务,这样即使`ServiceB.methodB`的事务提交了,如果`ServiceA....

    全面分析_Spring_的编程式事务管理及声明式事务管理

    其他的传播行为还有 `PROPAGATION_SUPPORTS`、`PROPAGATION_MANDATORY`、`PROPAGATION_REQUIRES_NEW`、`PROPAGATION_NOT_SUPPORTED`、`PROPAGATION_NEVER` 和 `PROPAGATION_NESTED`,它们分别对应不同的事务处理策略...

    Spring事务传播原理及数据库事务操作原理.rar

    Spring定义了七种事务传播行为:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER和PROPAGATION_NESTED。每种行为都...

    Spring事务传播属性

    例如,PROPAGATION_REQUIRED适合大部分需要事务控制的操作,而PROPAGATION_REQUIRES_NEW常用于需要独立事务环境的操作,比如发邮件、记录日志等。PROPAGATION_NESTED则用于需要部分独立事务的场景,它允许在保持现有...

    Spring中事务的传播属性详解

    4. **PROPAGATION_REQUIRES_NEW**:无论当前是否存在事务,都创建一个新的事务,并挂起当前事务。 5. **PROPAGATION_NOT_SUPPORTED**:以非事务方式执行操作;如果当前存在事务,则挂起当前事务。 6. **PROPAGATION_...

    Spring事务传播Demo.zip

    例如,一个PROPAGATION_REQUIRED的方法调用了一个PROPAGATION_REQUIRES_NEW的方法,那么第二个方法将在新的独立事务中执行,即使第一个方法已经在一个事务中。 SSH,通常指的是Spring、Struts和Hibernate三个开源...

    spring 事务传播 demo

    例如,一个服务类中的某个方法可能使用`@Transactional(propagation = Propagation.REQUIRES_NEW)`注解,这样无论调用它的方法是否在事务中,都会开启一个新的独立事务。 Spring的事务管理器,如...

    spring事务传播

    例如,在处理支付业务时,可能会选择`PROPAGATION_REQUIRES_NEW`,以确保支付操作在一个独立的事务中完成,即使外部事务失败,支付状态也能正确保存。而在读取数据时,可能选择`PROPAGATION_SUPPORTS`,允许在已有...

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

    PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。 PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 PROPAGATION_NEVER--以非事务方式执行,如果...

    Spring+Struts2+Spring3+Hibernate3三大框架整合

    在实际开发中,例如在删除客户和订单的场景下,可以使用PROPAGATION_REQUIRES_NEW,确保订单删除失败时,不会影响客户删除操作的回滚。PROPAGATION_NESTED则依赖于JDBC3.0的保存点技术,可以在子事务失败时恢复到...

    开发工具 spring-tx-4.3.6.RELEASE.rar

    Spring TX还支持PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER和PROPAGATION_NESTED等七种事务传播行为。...

    spring事物

    Spring事务管理支持四种传播行为(PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW, PROPAGATION_SUPPORTS, PROPAGATION_NOT_SUPPORTED, PROPAGATION_NEVER, PROPAGATION_MANDATORY, PROPAGATION_NESTED),这些...

    spring事务管理机制资料.zip

    其他如PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER和PROPAGATION_NESTED等都有各自的适用场景。 在实际应用中,Spring事务管理还可以与其他功能结合使用,如...

    spring事务的传播特性.pptx

    4. **Propagation_REQUIRES_NEW**:总是开启一个新的事务,如果当前存在事务,则把当前事务挂起。在场景六中,`AccountServiceImpl`的方法标记为`REQUIRES_NEW`,无论调用它的方法是否有事务,都会创建一个新的独立...

    spring事务处理

    @Transactional(propagation = Propagation.REQUIRES_NEW) public void createUserWithLog(User user) { // 创建用户 userRepository.save(user); // 记录日志 logService.log("User created: " + user....

Global site tag (gtag.js) - Google Analytics