还可以设置回滚点,看下面
/**
* 用户登录接口
*
*
* 1明确事务方法前的命名规则
* 2保证事务方法执行的时间尽可能的短,不允许出现循环操作,不允许出现RPC等网络请求操作
* 3不允许所有的方法都使用事务,节省服务器性能和缩短数据库连接时间
* 4如果出现有多个地方需要事务回滚时,使用自定义或原有的异常进行抛出,异常必须继承RunTimeError,否则不会触发回滚操作
* 5使用TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();进行手动回滚
*
*/
@Transactional
public UserModel login(UserModel user){ UserModel userEntity = new UserModel(); userEntity = userDao.login(user);
if(userEntity == null)
{
return null;
} userEntity = userDao.login(user);
if(userEntity == null)
{
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return null;
}
else
{
return userEntity;
}
}

直接给出一个例子代码,上面只是记录一下,下面才是干货。

首先很多时候我们不会采用事务操作,但是当我们在一个服务层多次访问数据库特别是进行插入删除操作的时候,我们需要使用事务进行操作,也就是一个不成功,所有的操作全部回滚。

那么具体的事务特性我就不多说了,规范我也打在最上面的注释里面了。主要注意一下,

使用@Transactional 注解

如果第一次插入成功,第二次插入失败,执行TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 这条语句之后,第一次的插入动作就被回滚了,也就是并没有生效。

手动回滚看起来会比较实用一些。

然后对于抛出异常的那种自动回滚可以参考百度各种代码。比较麻烦一些,就不列举了。

补充一下:

使用Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();

设置回滚点,使用TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);回滚到savePoint。

 
 
后序补充详细属性配置(复杂)

      </div>

转载:https://blog.csdn.net/meandmyself/article/details/77366945

posted on
2019-06-18 19:40 
duende99 
阅读(...) 
评论(...) 
编辑 
收藏

@Transactional spring事务回滚相关的更多相关文章

  1. 事务之二:spring事务(事务管理方式,事务5隔离级别,7个事务传播行为,spring事务回滚条件)

    事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或 ...

  2. Spring事务回滚和异常类

    1.异常的一些基本知识 异常的架构 异常的继承结构:Throwable为基类,Error和Exception继承Throwable.Error和RuntimeException及其子类成为未检查异常( ...

  3. Spring 事务回滚机制详解

    1:事务原理 1.2:aop/动态代理 类路径:org/springframework/aop/framework/CglibAopProxy.java ReflectiveMethodInvocat ...

  4. spring事务回滚问题

    刚刚接到一个上家公司同事的一个电话,问我为什么service方法事务不会滚了,日志打印了,调用webservice报错. 我让他把这个调用执行webservice的方法截图发给我,如下:   publ ...

  5. spring 事务回滚

    1.遇到的问题 当我们一个方法里面有多个数据库保存操作的时候,中间的数据库操作发生的错误.伪代码如下: public method() { Dao1.save(Person1); Dao1.save( ...

  6. 关于Spring事务回滚的问题

    在spring的配置文件中,如果数据源的defaultAutoCommit设置为True了,那么方法中如果自己捕获了异常,事务是不会回滚的,如果没有自己捕获异常则事务会回滚,如下例比如配置文件里有这么 ...

  7. Spring事务回滚

    配置事物: @Configuration /**强制使用cglib代理时就把proxy-target-class设为true.*/ @EnableTransactionManagement(proxy ...

  8. Oracle并行事务回滚相关参数及视图

    /******相关参数****/fast_start_parallel_rollback1.取值有3种:false,low,high2.各值含义:false  ---禁用并行回滚功能          ...

  9. spring事务回滚无法捕捉

    这篇文章讲解了怎么配置才能让spring事务捕捉异常 http://www.360doc.com/content/12/1109/18/6161903_246870991.shtml 需要正确配置sp ...

随机推荐

  1. Android_(控件)使用Gallery浏览手机上SD卡中图片

    运行截图: (发现后面两张照片是自己自拍,大写的尴尬对图片进行涂鸦了!!!) 程序结构: <?xml version="1.0" encoding="utf-8&q ...

  2. tkmybatis逆向工程关于tinyint的玄学问题

    数据库中存储的数据类型是tinyint(1) state tinyint(1) 状态0-未完成:1-待提交:2-待支付:3支付失败: 不为空 tinyint(1)存储的时候会存储下面长度的数字 但是在 ...

  3. Flutter文本框TextField

    参数详解TextField同时也使用Text 的部分属性: 属性 作用controller 控制器,如同 Android View iddecoration 输入器装饰keyboardType 输入的 ...

  4. 石川es6课程---9、面向对象-基础

    石川es6课程---9.面向对象-基础 一.总结 一句话总结: js老版本的面向对象和继承都不是很方便,新版的面向对象向其它语言靠拢,有了class,extends,constructor等关键字,用 ...

  5. linux 禁ping

    今天用nmap扫描了局域网的主机,发现几个主机开着好多危险端口,做linux的,对这些安全知识有一点了解.遂用nmap扫描了自己的主机是否存在可利用端口.发现每次nmap都能成功的检测我的主机是ali ...

  6. ModuleNotFoundError: No module named '_sqlite3'的解决办法:pipenv的用法

    export PIPENV_VENV_IN_PROJECT=1pipenv --venvpipenv --where pipenv install -r requirements.txtpipenv ...

  7. vue问题六:计算属性,依赖发生变化时,重新计算computed:

    <el-form-item label="单价:" prop="price" > <el-input v-model="addfor ...

  8. Dialog 对话框

    在保留当前页面状态的情况下,告知用户并承载相关操作. 基本用法 Dialog 弹出一个对话框,适合需要定制性更大的场景. 需要设置visible属性,它接收Boolean,当为true时显示 Dial ...

  9. Node.js的事件轮询Event Loop原理

    Node.js的事件轮询Event Loop原理解释 事件轮询主要是针对事件队列进行轮询,事件生产者将事件排队放入队列中,队列另外一端有一个线程称为事件消费者会不断查询队列中是否有事件,如果有事件,就 ...

  10. Appium+python自动化2-环境搭建

    一.必备软件安装 小编的环境是Windows 7版本 64位系统(32位的同学自己想办法哦) 1.jdk1.6.0 (64位) 2.android-sdk_r24.3.4-windows 3.pyth ...