首页 > 其他分享 >事务传播行为tips

事务传播行为tips

时间:2024-01-26 20:01:04浏览次数:24  
标签:回滚 调用 事务 transferA 文件系统 传播 tips 方法


上述代码中,若transfer方法内部调用transferA方法 按照常规对于Require_New事务传播行为的理解,循环中被提交的各transferA不回滚,生效,最后一次因为抛出异常而回滚
而事实上,运行结果为所有对于transferA方法的调用均回滚
原因在于将transfer和transferA方法写在了同一个类中

如上图所示 将被调用的transferB方法写入另一个类中,就能达到循环中被提交的各transferB不回滚,最后一次回滚
另外,事务一般用于数据库操作中,传统的文件写入,对象赋值并不会随事务回滚而回滚
当然,Spring事务管理器也可以扩展到回滚文件系统的操作

在上述示例中,FileSystemService 类使用了 @Transactional 注解,以指示该类的方法将在事务中执行。在 deleteFile 方法中,我们执行了文件系统的操作(在此示例中是删除文件),然后通过抛出运行时异常来模拟回滚场景。
为了让Spring能够处理文件系统资源,我们使用了ResourceLoader来加载文件资源。通过使用getResource方法,我们可以获取对应文件的Resource对象,并进一步处理文件系统操作。

标签:回滚,调用,事务,transferA,文件系统,传播,tips,方法
From: https://www.cnblogs.com/dhblogs/p/17990582

相关文章

  • 梯度的前反向传播
    梯度的前反向传播参考给出此节参考:邱书的自动微分https://www.zhihu.com/question/518729844/answer/2373268636A梯度计算有两种方向,一个是梯度的前向传播,一个是梯度的反向传播;A.1一般来说在DL中使用反向传播更加好,我自己认为主要有两个原因,可能角度比较局限,请批判吸收......
  • 2、mysql中的事务
    1.事务日志事务日志可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把该修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用的是追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序IO......
  • 事务的隔离级别及脏读,不可重复读,幻读等问题
    事务隔离级别以及对应的问题如上所示。读未提交:在修改数据时在没有提交时就修改了数据库,如果修改回滚则又修改为原值,这样的话在修改与回滚之间读取的数据就是不准确的,会产生脏读现象。脏读现象是读取到未修改的数据,即是数据逻辑上不存在的数据(因为回滚未提交),而下面产生的问题均......
  • 了解Java事务管理
    在软件开发过程中,事务管理是一个非常重要的概念.事务用于确保数据库操作的一致性和完整性,并且具有原子性、一致性、隔离性和持久性的特性.Java提供了强大的事务管理机制,使得我们能够更好地处理数据的一致性和并发控制.Java事务管理主要通过JavaTransactionAPI(JTA)和Java......
  • Spring的事务使用教程
    什么是事务?事务(Transaction)是数据库操作最基本单元,逻辑上一组操作,要么都成功,要么都失败,如果操作之间有一个失败所有操作都失败。事务四个特性(ACID)原子性一组操作要么都成功,要么都失败。一致性一组数据从事务1合法状态转为事务2的另一种合法状态,就是一致。隔离性事务1......
  • 事务未提交和连接未关闭
    事务未提交和连接未关闭背景最近一个项目出现了应用服务器无法登录的现象.出现现象后,给出了jstack和应用的log等信息.jstack里面所有的http的nio线程都在parked状态.然后log里面出现了大量的获取不到链接的提示.所以第一反应是因为事务未提交导致的连接池泄露.......
  • 支付宝:多线程事务怎么回滚?说用 @Transactional 可以回去等通知了!
    1,最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败,则全部回滚。2,在spring中可以使用@Transactional注解去控制事务,使出现异常时会进行回滚,在多线程......
  • 事务
    事务事务就是用户定义的一系列数据库操作,这些操作可以视为一个完成的逻辑处理工作单元,要么全部执行,要么全部不执行,是不可分割的工作单元。很形象的一个例子,张三给李四转账100元,在程序里面,张三的余额就要-100,李四的余额就要+100整个事件是一个整体,哪一步错了,整个事件都是失败的......
  • rocketmq--同步、异步、批量、事务消息demo
    在SpringBoot中使用RocketMQ进行同步和异步消息传输的关键是使用RocketMQTemplate类。下面是两个例子,分别演示了如何实现同步和异步消息传输。首先,确保你已经添加了RocketMQ的依赖到你的pom.xml中,如下所示:<dependency><groupId>org.apache.rocketmq</groupId><artifa......
  • 数据库学习笔记(四)—— MySQL 之 事务篇
    MySQL之事务篇事务事务是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。事务的四大特性(ACID):A原子性:原子性是指包含事务的操作要么全部执行......