Java并发之事务处理

在日常开发中,经常需要处理事务,即要不成功,要么失败。

事务的特点是ACID

一、添加注解

在方法上添加 注解==@Transactional ==可在执行方法执行失败时回滚,但若service 方法中是否抛异常 try catch,若抛异常,可能直接抛出去,对数据库的操作无法回滚。
处理方法:

在catch中手动添加回滚方法

java 复制代码
import org.springframework.transaction.interceptor.TransactionAspectSupport;
// 添加注解
@Transactional(rollbackFor=Exception.class)
public void testTranscations(){
	try{
		// 业务处理代码
	} catch {
		// 手动回滚
		TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
	}
}
二、跨库事务

在长链路调用时场景,可能出现跨库操作,导致程序运行失败
处理方法

可在注解后添加 重开事务

java 复制代码
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Propagation;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void testTranscations(){
	// 业务逻辑处理
}
相关推荐
IvorySQL13 分钟前
PostgreSQL 技术日报 (3月7日)|生态更新与内核性能讨论
数据库·postgresql·开源
xiaoye20181 小时前
Lettuce连接模型、命令执行、Pipeline 浅析
java
赵渝强老师1 小时前
【赵渝强老师】金仓数据库的数据文件
数据库·国产数据库·kingbase·金仓数据库
随逸1774 小时前
《Milvus向量数据库从入门到实战,手把手搭建语义检索系统》
数据库
beata4 小时前
Java基础-18:Java开发中的常用设计模式:深入解析与实战应用
java·后端
Seven975 小时前
剑指offer-81、⼆叉搜索树的最近公共祖先
java
神秘的猪头5 小时前
🚀 React 开发者进阶:RAG 核心——手把手带你玩转 Milvus 向量数据库
数据库·后端·llm
雨中飘荡的记忆1 天前
保证金系统入门到实战
java·后端
Nyarlathotep01131 天前
Java内存模型
java
IvorySQL1 天前
PostgreSQL 技术日报 (3月6日)|为什么 Ctrl-C 在 psql 里让人不安?
数据库·postgresql·开源