@Transactional属性详解
java1234
共 11914字,需浏览 24分钟
· 2021-05-25
点击上方蓝色字体,选择“标星公众号”
优质文章,第一时间送达
使用说明
注解失效问题
@Transactional 应用在非 public 修饰的方法上
@Transactional 注解属性 rollbackFor 设置错误
同一个类中方法调用,导致@Transactional失效
异常被你的 catch“吃了”导致@Transactional失效
数据库引擎不支持事务
开启多线程任务时,事务管理会受到影响
@Service
public class ServiceA {
@Transactional
public void threadMethod(){
this.insert();
System.out.println("main insert is over");
for(int a=0 ;a<3;a++){
ThreadOperation threadOperation= new ThreadOperation();
Thread innerThread = new Thread(threadOperation);
innerThread.start();
}
}
public class ThreadOperation implements Runnable {
public ThreadOperation(){
}
@Override
public void run(){
insert();
System.out.println("thread insert is over");
}
}
public void insert(){
//do insert......
}
}
@Service
public class ServiceA {
@Autowired
private ServiceB serviceB;
@Transactional
public void threadMethod(){
this.insert();
System.out.println("main insert is over");
for(int a=0 ;a<3;a++){
ThreadOperation threadOperation= new ThreadOperation();
Thread innerThread = new Thread(threadOperation);
innerThread.start();
}
}
public class ThreadOperation implements Runnable {
public ThreadOperation(){
}
@Override
public void run(){
serviceB.insert();
System.out.println("thread insert is over");
}
}
public void insert(){
//do insert......
}
}
@Service
public class ServiceB {
@Transactional
public void insert(){
//do insert......
}
}
@Service
public class ServiceA {
@Autowired
private ServiceB serviceB;
@Transactional
public void threadMethod(){
this.insert();
System.out.println("main insert is over");
for(int a=0 ;a<3;a++){
ThreadOperation threadOperation= new ThreadOperation();
Thread innerThread = new Thread(threadOperation);
innerThread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
try {
serviceB.delete();③
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
innerThread.start();
}
}
public class ThreadOperation implements Runnable {
public ThreadOperation(){
}
@Override
public void run(){
try {
serviceB.insert();
}catch (Exception ex){ ②
System.out.println(" Exception in run ");
throw new RuntimeException();
}
System.out.println("thread insert is over");
}
}
public void insert(){
//do insert......
}
}
@Service
public class ServiceB {
@Transactional
public void insert() throws Exception{ ①
//do insert......
}
@Transactional
public void delete() throws Exception{
//do delete......
}
}
————————————————
版权声明:本文为CSDN博主「丶炜钦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44521690/article/details/116797363
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:
https://blog.csdn.net/weixin_44521690/article/details/116797363
粉丝福利:Java从入门到入土学习路线图
👇👇👇
👆长按上方微信二维码 2 秒
感谢点赞支持下哈
评论
光纤详解:光纤跳线如何分类,多向单模转换?
本文来自“光纤详解:光纤跳线如何分类,多向单模转换?”,光纤跳线作为光网络布线最基础的元件之一,被广泛应用于光纤链路的搭建中。如今,光纤制造商根据应用场景的不同推出众多类型的光纤跳线,如MPO/LC/SC/FC/ST光纤跳线,单工/双工光纤跳线,单模/多模光纤跳线等,它们之间各有特色,且不可替代。本
架构师技术联盟
0
GPT的风也吹到了CV,详解自回归视觉模型的先驱! ImageGPT:使用图像序列训练图像 GPT模型
作者丨科技猛兽编辑丨极市平台导读 在 CIFAR-10 上,iGPT 使用 linear probing 实现了 96.3% 的精度,优于有监督的 Wide ResNet,并通过完全微调实现了 99.0% 的精度,匹配顶级监督预训练模型。本文目录1 自回归视觉模型的先驱 ImageGPT:
机器学习初学者
0
轻松学习C#:百度行驶证C++离线SDK接入详解
效果 先看最终效果SDK 拿到完整包如图,687M解压后看看内容发现有个readme.txt,那就先看看内容1:用vs2015打开sln工程,最好用vs2015 comunity版本,可微软官网下载。2:sdk的doc目录有pdf接口文档。3:工程总入口main.cpp、请参考示例实现您的功能。4:
DotNet NB
9
chatgpt实现NLP基本任务(实体识别、关系抽取、属性抽取、事件抽取、文本分类)
向AI转型的程序员都关注了这个号👇👇👇基础函数一、实体识别抽取文本:驻港部队从1993年初开始组建,1996年1月28日组建完毕,1997年7月1日0时进驻香港,取代驻港英军接管香港防务,驻港军费均由中央人民政府负担。《中华人民共和国香港特别行政区驻军法》规定了驻香港部队的职责为防备和抵抗侵略,保卫
机器学习AI算法工程
10
大模型“芝麻开门”的首选框架,LangChain全新教程!附600分钟详解视频
LangChain 作为一个开源的大语言模型应用框架,自诞生之日起就备受瞩目。然而,它的发展之路却走过了不少曲折。一开始,LangChain 遭受了不少质疑和非议。有人认为它只适合入门学习,代码质量和设计缺乏工业级的严谨性,难以应用于生产环境。的确,作为一个新兴项目,LangChain 的早期版本还
机器学习算法与Python实战
10
一文详解 JDK1.8 的 Lambda、Stream、LocalDateTime
今天跟小伙伴们聊聊 Java中JDK1.8的一些新语法特性使用,主要是Lambda、Stream和LocalDate日期的一些使用讲解。LambdaLambda介绍Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得...
我是程序汪
0
详解数据资产入表六步法
土地财政趋向饱和,数据成财政新引擎在全球数字化转型的大趋势下,数据交易市场有望推动数据要素价值的开放共享和流通。据信通院测算,2021年全球47个重要经济体的数字经济增加值规模高达 38.1 万亿美元,我国2021年...
肉眼品世界
0
MSTP 详解
mstp可兼容STP,RSTP(自动变成对应的工作模式);mstp同一个区域的特点是: 域名名字一致,实例映射一致,修订级别一致。 用到的代码 STP MODE MSTP 全部设置MSTP(mstp为默认) stp region-configuration ...
joke7164
0