springBoot框架⽅法上⾯添加@Transactional注解的使⽤
springBo。。。
@Transactional如果在⼀个⽅法上⾯添加@Transactional注解
查看postgresql数据库当前的事务隔离级别:
springboot框架的作用
@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的作⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论