当前位置:网站首页>@Transactional 事务调用与生效场景总结
@Transactional 事务调用与生效场景总结
2022-08-02 20:53:00 【浮生若梦l】
1.同一个类中 事务publicA掉非事务B B抛异常 AB事务生效(具有传播性)
@Override
@Transactional
public void A() {
User u = new User();
u.setAccount("test");
u.setName("1");
u.setMobile("12345678912");
u.setPassword("111");
this.save(u);
B();
}
public void B() {
User u1 = new User();
u1.setAccount("test1");
u1.setName("2");
u1.setMobile("12345678913");
u1.setPassword("111");
this.save(u1);
//促发异常
if(3/0==1)
System.out.println("");
}
2.同一个类中 事务A掉非事务B A抛异常 AB事务生效
@Override
@Transactional
public void A() {
User u = new User();
u.setAccount("test");
u.setName("1");
u.setMobile("12345678912");
u.setPassword("111");
this.save(u);
B();
//促发异常
if(3/0==1)
System.out.println("");
}
public void B() {
User u1 = new User();
u1.setAccount("test1");
u1.setName("2");
u1.setMobile("12345678913");
u1.setPassword("111");
this.save(u1);
}
3.同一个类中 事务A掉事务B A抛异常 AB事务生效
@Override
@Transactional
public void A() {
User u = new User();
u.setAccount("test");
u.setName("1");
u.setMobile("12345678912");
u.setPassword("111");
this.save(u);
B();
//促发异常
if(3/0==1)
System.out.println("");
}
@Transactional
public void B() {
User u1 = new User();
u1.setAccount("test1");
u1.setName("2");
u1.setMobile("12345678913");
u1.setPassword("111");
this.save(u1);
}
4.同一个类中 事务A掉事务B B抛异常 AB事务生效
@Override
@Transactional
public void A() {
User u = new User();
u.setAccount("test");
u.setName("1");
u.setMobile("12345678912");
u.setPassword("111");
this.save(u);
B();
}
@Transactional
public void B() {
User u1 = new User();
u1.setAccount("test1");
u1.setName("2");
u1.setMobile("12345678913");
u1.setPassword("111");
this.save(u1);
//促发异常
if(3/0==1)
System.out.println("");
}
5.同一个类中 非事务A掉事务B B抛异常 A无事务 B事务不生效
@Override
public void A() {
User u = new User();
u.setAccount("test");
u.setName("1");
u.setMobile("12345678912");
u.setPassword("111");
this.save(u);
B();
}
@Transactional
public void B() {
User u1 = new User();
u1.setAccount("test1");
u1.setName("2");
u1.setMobile("12345678913");
u1.setPassword("111");
this.save(u1);
//促发异常
if(3/0==1)
System.out.println("");
}
6.同一个类中 非事务A掉事务B(通过注入-相当于调用不同类中的B方法) B抛异常 A无事务,B事务生效
@Override
public void A() {
User u = new User();
u.setAccount("test");
u.setName("1");
u.setMobile("12345678912");
u.setPassword("111");
this.save(u);
userService.B();
}
@Transactional
@Override
public void B() {
User u1 = new User();
u1.setAccount("test1");
u1.setName("2");
u1.setMobile("12345678913");
u1.setPassword("111");
this.save(u1);
//促发异常
if(3/0==1)
System.out.println("");
}
7.同一个类中 非事务A掉事务B(通过注入) A抛异常 A无事务,B不促发事务,ab数据都会增加成功
@Override
public void A() {
User u = new User();
u.setAccount("test");
u.setName("1");
u.setMobile("12345678912");
u.setPassword("111");
this.save(u);
userService.B();
//促发异常
if(3/0==1)
System.out.println("");
}
@Transactional
@Override
public void B() {
User u1 = new User();
u1.setAccount("test1");
u1.setName("2");
u1.setMobile("12345678913");
u1.setPassword("111");
this.save(u1);
}
8.同一个类中 事务A掉非事务B(通过注入)A或B抛异常 AB事务生效 (事务传播性)
@Transactional
@Override
public void A() {
User u = new User();
u.setAccount("test");
u.setName("1");
u.setMobile("12345678912");
u.setPassword("111");
this.save(u);
userService.B();
//促发异常
if(3/0==1)
System.out.println("");
}
@Override
public void B() {
User u1 = new User();
u1.setAccount("test1");
u1.setName("2");
u1.setMobile("12345678913");
u1.setPassword("111");
this.save(u1);
}
总结:1.事务A掉B ,AB都有事务(事务传播性)2.非事务A掉事务B,A都无事务,B只有通过注入(AOP)方式调用的时候,B的事务才生效。3.private不能加事务 4.声明式事务如果要细化,可以拆分方法
边栏推荐
- Wiring diagrams of switches, motors, circuit breakers, thermocouples, and meters
- php 单引号 双引号 -> => return echo
- 矩阵白化原理及推导
- 【21天学习挑战赛】冒泡排序与插入排序
- Digital twins help visualize the construction of smart cities
- golang刷leetcode:最大波动的子字符串
- 博客主页rrs代码
- 总结嵌入式C语言难点(2部分)
- [C题目]力扣142. 环形链表 II
- Informatics Olympiad All-in-One (1260: [Example 9.4] Intercepting Missiles (Noip1999))
猜你喜欢
随机推荐
以赛促练-力扣第304场周赛反思(持续更新中)
Details in C# you don't know
微软SQL服务器被黑客入侵以窃取代理服务的带宽
2022年金九银十,Android面试中高频必问的问题汇总
X 2 Earn必须依靠旁氏启动?GameFi的出路在哪?(下)
How to quickly compare two byte arrays for equality in .NET
Bee 事务注解 @Tran 使用实例
How to use windbg check c # a thread stack size?
【目标检测】YOLOv5:640与1280分辨率效果对比
golang刷leetcode: 卖木头块
ICLR 2022最佳论文:基于对比消歧的偏标签学习
汉源高科千兆4光4电工业级网管型智能环网冗余以太网交换机防浪涌防雷导轨式安装
Day35 LeetCode
用户之声 | GBASE南大通用实训有感
2018HBCPC个人题解
信息学奥赛一本通(1259:【例9.3】求最长不下降序列)
.NET如何快速比较两个byte数组是否相等
Informatics Olympiad All-in-One (1260: [Example 9.4] Intercepting Missiles (Noip1999))
golang刷letcode:公司命名
供电系统电气图