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(){
	// 业务逻辑处理
}
相关推荐
vvvae12344 分钟前
分布式数据库
数据库
哎呦没5 分钟前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
Kalika0-023 分钟前
猴子吃桃-C语言
c语言·开发语言·数据结构·算法
_.Switch24 分钟前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
雪域迷影24 分钟前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
编程、小哥哥32 分钟前
netty之Netty与SpringBoot整合
java·spring boot·spring
代码雕刻家40 分钟前
课设实验-数据结构-单链表-文教文化用品品牌
c语言·开发语言·数据结构
一个闪现必杀技43 分钟前
Python入门--函数
开发语言·python·青少年编程·pycharm
Fan_web1 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
龙图:会赢的1 小时前
[C语言]--编译和链接
c语言·开发语言