简单单解决你的事务回滚问题
来源:互联网 发布:网络共享硬盘无法访问 编辑:程序博客网 时间:2024/06/06 05:07
/** * 用户登录接口 * * * 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。后序补充详细属性配置(复杂)http://www.cnblogs.com/linkstar/p/7372329.html
阅读全文
0 0
- 简单单解决你的事务回滚问题
- SQL事务回滚的问题及其解决的方法
- 事务回滚问题
- 关于Spring事务回滚的问题
- 关于Spring事务回滚的问题
- Spring事务回滚的问题
- 关于Spring事务回滚的问题
- spring事务回滚失效的问题
- 关于Spring事务回滚的问题
- mysql事务回滚的问题
- SpringMVC Mybatis的事务回滚问题
- spring事务回滚的问题
- 简单的Spring事务嵌套与事务回滚
- 解决AssignmentHandler 出现异常事务无法回滚问题
- Spring中解决Aop 事务嵌套回滚问题
- 解决mysql LOCK TABLES 后事务无法回滚的问题
- 解决生产环境上日志报事务回滚的问题
- SQL2000 事务回滚问题
- 浅析Java中的final关键字
- HPUoj 1415(小ho的0 1串)
- margin-top失效, css + div 布局之 CSS盒模型 外边距合并问题 问题表述: 那天晚上一个同学给我发来一个问题,原型大概是“一个maindiv嵌套了一个div.class="he
- mysql用户权限设置
- java文件下载
- 简单单解决你的事务回滚问题
- 阶梯博弈-HDU3389
- zookeeper 配置启动报错(org.apache.zookeeper.server.quorum.QuorumPeerMain)
- SpringBoot自动配置
- Docker
- ECMAScript 2016 (ES7)
- HDU 5974 A Simple Math Problem 数学
- leetcode[Array Partition I]//待整理多种解法
- android 签名打包时去掉log日志打印(仅在debug包中打印log信息)