当前位置:网站首页>@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.声明式事务如果要细化,可以拆分方法
边栏推荐
猜你喜欢
随机推荐
主成分分析(PCA)
sre成长之路
回文自动机+CodeTON Round 2 C,D
千人优学 | GBase 8s数据库2022年6月大学生专场实训圆满结束
Informatics Olympiad All-in-One (1260: [Example 9.4] Intercepting Missiles (Noip1999))
【模型压缩】实例分析量化原理
How the sensor works
A brief discussion on the transformation of .NET legacy applications
Adobe官方清理工具Adobe Creative Cloud Cleaner Tool使用教程
Which thread pool does Async use?
[C题目]力扣138. 复制带随机指针的链表
【3D视觉】深度摄像头与3D重建
一款免费的容器安全 SaaS 平台使用记录
信息学奥赛一本通(1259:【例9.3】求最长不下降序列)
js: 实现一个cached缓存函数计算结果
golang刷leetcode:到达角落需要移除障碍物的最小数目
解道8-编程技术5
golang刷leetcode:道路的最大总重要性
你所不知道的C#中的细节
The five classification of software testing