springBoot框架方法上面添加@Transactional注解的使用 springBoot框架类上面添加@Transactional注解的使用postgresql数据库

@Transactional如果在一个方法上面添加@Transactional注解

查看postgresql数据库当前的事务隔离级别:

 

 

 

@Transactional

public void updateData(){

  aService.updateA();//更新A表

  bService.updateB();//更新B表

  cService.updateC();//更新C表

}

假设,如果每一个service只会对应的更新他所对应的这张表,下面这三个方法上面加不加@Transactional效果都是一样的。不会对最终的结果产生影响。

Pubic void updateA(){

    //只进行更新A表的操作

}

Pubic void updateB(){

    //只进行更新B表的操作

}

Pubic void updateC(){

    //只进行更新C表的操作

}

这种架构,的意思是将ABC三张表的更新操作绑定成一个原子,更新的时候,要成功都成功,要失败都失败。

如果将上面的架构换成下面这种模式:

public void updateData(){

aService.updateA();//更新A表

if(1==1){

Throw new BussinessException(“模拟发生异常”);

}

bService.updateB();//更新B表

cService.updateC();//更新C表

}

假设,如果每一个service只会对应的更新他所对应的这张表,下面这三个方法上面加不加@Transactional效果都是一样的。不会对最终的结果产生影响。

Pubic void updateA(){

    //只进行更新A表的操作

}

Pubic void updateB(){

    //只进行更新B表的操作

}

Pubic void updateC(){

    //只进行更新C表的操作

}

我们会发现程序抛出了异常,但是A表成功的更新了数据。

 

如果我们在类上面添加@Transactional 注解

@Transactional

public class Test{

  

public void updateData(){

  aService.updateA();//更新A表

  bService.updateB();//更新B表

  cService.updateC();//更新C表

}

  

}

 

Pubic void updateA(){

    //只进行更新A表的操作 假设A表中有两条三条数据要进行更新操作,

    //我在更新第二条数据的时候手动抛出一个异常

}

 

这个时候,我们进行测试,会发现,所有的数据都不会进行更新,这就是类级别的@Transactional的作用。

posted on   ~码铃薯~  阅读(1624)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示