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

Java 创建事务的方式

1、使用声明式事务 @Transactional

注意,@Transactional 只回滚RuntimeException和Error,而Exception、IOException是不会回滚的。
所以为了所有异常都能正常回滚,一般会写为:@Transactional(rollbackFor = Exception.class)

2、使用编程式事务

(1)PlatformTransactionManager

@Resource
private PlatformTransactionManager transactionManager;
TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionAttribute());
transactionManager.rollback(status); // 手动回滚
transactionManager.commit(status); // 提交事务
// 也可创建回滚点,回滚部分内容
Object savepoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savepoint);

(2)TransactionTemplate

@Resource
private TransactionTemplate transactionTemplate;transactionTemplate.execute(status1 -> {Object savepoint1 = status1.createSavepoint();status1.rollbackToSavepoint(savepoint1);status1.setRollbackOnly();return null;
});

(3)TransactionAspectSupport

注意,使用TransactionAspectSupport要加入注解@Transactional,不然TransactionAspectSupport.currentTransactionStatus()会扔出报错"No transaction aspect-managed TransactionStatus in scope"

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// 也可创建回滚点,回滚部分内容
Object savepoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savepoint);
http://www.zskr.cn/news/70431.html

相关文章:

  • P3_安装配置MMSegmentation+预训练语义分割推理预测
  • R20-2025年国产活动板房选购指南:领军品牌深度解析
  • langchain4j 学习系列(5)-RAG
  • Alpha冲刺总结报告
  • 20251203周三日记
  • 为什么需要多路召回
  • 2025年11月农药瓶供应商排行榜:安徽金汇龙包装领跑行业
  • 2025年11月农药瓶供应商排行TOP10:安徽金汇龙包装领跑行业
  • 某中心与南加州大学联合遴选三位机器学习研究员
  • Alpha冲刺 - Day 6
  • 写的都队-冲刺总结
  • 12.3阅读笔记
  • Python自动化脚本实战:批量创建用户、文件备份、日志清理、服务监控
  • DVWA SQL Injection—Medium and high(使用sqlmap工具注入)
  • 完整教程:Kafka 四个选举,Controller 选举、Partition leader 选举、GroupCoordinator 选举、消费组协调器选举详解
  • 第三方软件测试机构:【“Bug预防”比“Bug发现”更有价值:如何建立缺陷根因分析与流转机制?】 - 详解
  • 移动云专业版root分辨率 安卓11
  • 最新发布!长租公寓哪家好?哪家更靠谱?TOP10权威推荐
  • 解决mybatis批量更新慢问题
  • 详细介绍:kotlin - 显示HDR图(heic格式),使用GainMap算法,速度从5秒提升到0.6秒
  • 文件的常用操作
  • 聊聊Oracle数据库的向量能力 - 详解
  • Spring Boot框架中在Controller方法里获取Request和Response对象的2种方式
  • 第五天项目
  • 团队作业4——7天敏捷冲刺
  • 【小题狂练A】“一切沉溺者挣扎者向所谓极致献出 最稚嫩的人格”
  • 第三天项目
  • 第7篇Scrum冲刺博客
  • 一些md5绕过总结(长期补充)
  • C语言随堂笔记-1