当前位置: 首页 > wzjs >正文

南宁企业建站泌阳专业网站建设

南宁企业建站,泌阳专业网站建设,无投入网站推广,wordpress滑动相册Spring Boot 七种事务传播行为支持部分回滚的分析 支持部分回滚的传播行为 REQUIRES_NEW:始终开启新事务,独立于外部事务,失败时仅自身回滚。NESTED:在当前事务中创建保存点(Savepoint),可局部…

Spring Boot 七种事务传播行为支持部分回滚的分析

支持部分回滚的传播行为
  • REQUIRES_NEW:始终开启新事务,独立于外部事务,失败时仅自身回滚。
  • NESTED:在当前事务中创建保存点(Savepoint),可局部回滚到保存点,不影响外部事务整体提交。

代码示例:使用 REQUIRES_NEW 实现部分回滚

1. 交易服务层(独立事务)
@Service
public class TransactionService {@Autowiredprivate TradeRepository tradeRepository;// 使用 REQUIRES_NEW,每个交易独立事务@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)public void processTrade(Trade trade) {try {// 模拟业务逻辑(如保存交易)tradeRepository.save(trade);if (trade.getId() == 3) { // 模拟交易3失败throw new RuntimeException("Transaction 3 failed");}} catch (Exception e) {// 本地异常处理,但事务仍会回滚throw e;}}
}
2. 批量任务协调者
@Service
public class BatchProcessor {@Autowiredprivate TransactionService transactionService;// 批量任务不开启事务(NOT_SUPPORTED)@Transactional(propagation = Propagation.NOT_SUPPORTED)public void executeBatch(List<Trade> trades) {for (Trade trade : trades) {try {transactionService.processTrade(trade);} catch (Exception e) {// 记录错误但继续处理其他交易System.out.println("Trade " + trade.getId() + " failed!");}}}
}
3. 测试用例
@SpringBootTest
public class BatchTest {@Autowiredprivate BatchProcessor batchProcessor;@Autowiredprivate TradeRepository tradeRepository;@Testpublic void testBatchProcessing() {List<Trade> trades = Arrays.asList(new Trade(1, "Success1"),new Trade(2, "Success2"),new Trade(3, "Failed")  // 交易3会失败);batchProcessor.executeBatch(trades);// 验证:交易1和2已提交,交易3未提交assertEquals(2, tradeRepository.count());}
}

代码示例:使用 NESTED 实现部分回滚

1. 交易服务层(嵌套事务)
@Service
public class TransactionService {@Autowiredprivate TradeRepository tradeRepository;// 使用 NESTED,在外部事务中创建保存点@Transactional(propagation = Propagation.NESTED, rollbackFor = Exception.class)public void processTradeWithNested(Trade trade) {try {tradeRepository.save(trade);if (trade.getId() == 3) {throw new RuntimeException("Transaction 3 failed");}} catch (Exception e) {throw e; // 回滚到保存点,但外部事务可继续提交其他交易}}
}
2. 批量任务协调者(需开启外部事务)
@Service
public class BatchProcessor {@Autowiredprivate TransactionService transactionService;// 开启外部事务(REQUIRED)@Transactional(propagation = Propagation.REQUIRED)public void executeBatchWithNested(List<Trade> trades) {for (Trade trade : trades) {try {transactionService.processTradeWithNested(trade);} catch (Exception e) {System.out.println("Trade " + trade.getId() + " failed!");// 继续处理其他交易}}// 手动提交外部事务(可选,但通常由Spring自动管理)}
}

传播行为对比表格

传播行为是否支持部分回滚适用场景代码示例方法
REQUIRED❌ 不支持继承父事务,失败时所有操作回滚-
REQUIRES_NEW✅ 支持独立事务,失败不影响其他交易processTrade()
SUPPORTS❌ 不支持无事务或依赖父事务-
NOT_SUPPORTED❌ 不支持挂起父事务,无事务执行-
MANDATORY❌ 不支持必须存在父事务-
NEVER❌ 不支持禁止存在父事务-
NESTED✅ 支持在父事务中创建保存点,局部回滚processTradeWithNested()

关键说明

  1. REQUIRES_NEW

    • 每个交易独立开启事务,失败时仅自身回滚,其他交易不受影响。
    • 适用场景:完全独立的交易,彼此无依赖。
  2. NESTED

    • 在父事务中创建保存点,失败时回滚到保存点,但父事务仍可提交。
    • 适用场景:交易间有弱关联,需局部回滚但整体提交成功。

注意:使用 NESTED 需确保数据库和驱动支持保存点(如MySQL/PostgreSQL)。


文章转载自:

http://lasLV5l1.Lthgy.cn
http://o8xZ6ZJm.Lthgy.cn
http://uMRM89Av.Lthgy.cn
http://oV20phKL.Lthgy.cn
http://glqDePWp.Lthgy.cn
http://HVAq2S4M.Lthgy.cn
http://8NmWl3TY.Lthgy.cn
http://aiIZ6JUN.Lthgy.cn
http://BLJvYSjO.Lthgy.cn
http://3qcrllMz.Lthgy.cn
http://xolC1b0I.Lthgy.cn
http://eAemAsma.Lthgy.cn
http://gL1wq6Ic.Lthgy.cn
http://lRn2aceF.Lthgy.cn
http://iQyQxAsh.Lthgy.cn
http://7nYVydpD.Lthgy.cn
http://zLI7DGak.Lthgy.cn
http://76j5bKsE.Lthgy.cn
http://Ky1yxPC0.Lthgy.cn
http://qph6B6ho.Lthgy.cn
http://bvO16RSs.Lthgy.cn
http://WqUkprNN.Lthgy.cn
http://dbRrDg5Y.Lthgy.cn
http://bD60Fupu.Lthgy.cn
http://a5K5s4Pz.Lthgy.cn
http://42Sywcrs.Lthgy.cn
http://821SuWth.Lthgy.cn
http://CP0DPBX8.Lthgy.cn
http://cY2vEqlh.Lthgy.cn
http://bhAqVZi7.Lthgy.cn
http://www.dtcms.com/wzjs/616073.html

相关文章:

  • 哈尔滨微网站建设手机上如何做网站
  • 让iis做跳转网站更改各网站企业信息怎么做
  • 郓城做网站网络公司网站建设模版
  • 免费网站建设社区网业协同是什么意思
  • 龙江网站设计雷州网站建设
  • 做外语网站的公司王也的配音员是谁
  • 烟台网站制作开发怎样开通微信公众号平台
  • 网站空间名词解释百度小说排行榜2019
  • 购物网站备案镇江百度优化
  • 做课件用这15大网站深圳网站建设前十名
  • 温州网站域名注册服务公司潍坊英文网站建设
  • 免费的购物网站源码网站设计流程的步骤
  • 长沙市网站制作哪家好wordpress mip手机主题
  • 唐山网站优化软件网站的服务器
  • 上海市城乡建设网站万网网站备份
  • 贸易公司做网站有优势吗企业咨询公司取名
  • 网站建设自身优势的分析南昌地宝网app
  • 哪个网站名片做的号怎么做捐款网站
  • 高大上的自助建站网站如何建设企业的网站
  • 手机建公司网站网站该怎么做
  • 江苏省住房保障建设厅网站织梦m网站伪静态
  • 自己做服务器和网站山东一建建设有限公司网站
  • 谷歌怎么做公司网站对网站进行seo优化
  • 济宁网站制作唐人2345网址大全首页
  • 淘宝建设网站的目的是什么意思本地化吃喝玩乐平台网站可以做吗
  • 电商公司建设网站衡阳网页设计
  • 顺丰电子商务网站建设网站建设课程体系
  • 一个网站大概多少钱wordpress一键脚本
  • 制作企业网站价格鞍山做网站团队
  • 网站平台专题如何制作家在深圳app下载