Spring 事务?

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/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、代码中只要是关于修改、删除、添加等方法,只要不保存,最后数据库中就不会保存,但是加了事务,即使你没有保存,数据库中也会替你保存(这块慎重,不想保存入库的千万不要在类/大方法上添加事务,否则。。。。。。)。

猜你喜欢

转载自blog.csdn.net/zhangleiyes123/article/details/83143957