Spring 事务?

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.youkuaiyun.com/zhangleiyes123/article/details/83143957

抽时间赶紧总结一波:最近遇到了关于事务的问题,一个小接口浪费了半天时间才解决,最后才发现是事务的原因,今天就特地把事务的问题分享给大家;

在此先向各位大神请教一个问题?

(1).    @Transactional(rollbackOn = Exception.class)    //import javax.transaction.Transactional;

(2).     @Transactional(rollbackFor=Exception.class)     //import org.springframework.transaction.annotation.Transactional;

这两个包下的事务有啥区别?都分别适用于什么场合?

*************************************************************************************************************************************************

*************************************************************************************************************************************************

一:

好了,言归正传,首先,我们都知道这种设置是因为Spring的默认回滚(运行时异常RuntimeException),如果想要回滚编译时异常Exception时,要设置@Transactional(rollbackFor = Exception.class),而且Exception还要抛出,抛出异常,就会回滚,数据库里面的数据也会回滚。

二:

事务可以写在类上,可以写在某个方法上,也可以写在某个大方法的具体的某个小方法上;

类中:

类中的某个大方法:

dao层中:

总结:1、类中全是查询方法,可以写在类中,代表整个类都加了事务(貌似查询又不需要事务哦,嘿嘿,这条略过!);

           2、若是类中有修改、删除、添加方法,不要写在类中,写在大方法上/大方法的小方法上,个人觉得最好还是写在大方法的小方法上,即就是那块需要加那块,否则出错了找半天,因为你不会轻易想到是事务这块的问题;

           3、代码中只要是关于修改、删除、添加等方法,只要不保存,最后数据库中就不会保存,但是加了事务,即使你没有保存,数据库中也会替你保存(这块慎重,不想保存入库的千万不要在类/大方法上添加事务,否则。。。。。。)。

4.https://blog.youkuaiyun.com/xp_lx1/article/details/82688338

参考网址

同一个类中某个方法A调用另外一个方法B,A方法中声明了事务,B中没有声明,则就只有一个事物,无论那个方法报错了,

都会回滚;如果A,B中都声明事务,但是A,B是在同一个类中,则被调用的方法B的事务不起作用,即还是只有一个事物;

如果A,B中都声明了事务,并且A,B是不同类中,则是两个事物,就是说A中报错回滚了,B中如果没有报错,则不影响B,

B还是OK的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stone.小小的太阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值