@Transactional spring事务回滚相关
/**
* 用户登录接口
*
*
* 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(); 这条语句之后,第一次的插入动作就被回滚了,也就是并没有生效。
手动回滚看起来会比较实用一些。
然后对于抛出异常的那种自动回滚可以参考百度各种代码。比较麻烦一些,就不列举了。
补充一下:
设置回滚点,使用TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);回滚到savePoint。
</div>
转载:https://blog.csdn.net/meandmyself/article/details/77366945
@Transactional spring事务回滚相关的更多相关文章
- 事务之二:spring事务(事务管理方式,事务5隔离级别,7个事务传播行为,spring事务回滚条件)
事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或 ...
- Spring事务回滚和异常类
1.异常的一些基本知识 异常的架构 异常的继承结构:Throwable为基类,Error和Exception继承Throwable.Error和RuntimeException及其子类成为未检查异常( ...
- Spring 事务回滚机制详解
1:事务原理 1.2:aop/动态代理 类路径:org/springframework/aop/framework/CglibAopProxy.java ReflectiveMethodInvocat ...
- spring事务回滚问题
刚刚接到一个上家公司同事的一个电话,问我为什么service方法事务不会滚了,日志打印了,调用webservice报错. 我让他把这个调用执行webservice的方法截图发给我,如下: publ ...
- spring 事务回滚
1.遇到的问题 当我们一个方法里面有多个数据库保存操作的时候,中间的数据库操作发生的错误.伪代码如下: public method() { Dao1.save(Person1); Dao1.save( ...
- 关于Spring事务回滚的问题
在spring的配置文件中,如果数据源的defaultAutoCommit设置为True了,那么方法中如果自己捕获了异常,事务是不会回滚的,如果没有自己捕获异常则事务会回滚,如下例比如配置文件里有这么 ...
- Spring事务回滚
配置事物: @Configuration /**强制使用cglib代理时就把proxy-target-class设为true.*/ @EnableTransactionManagement(proxy ...
- Oracle并行事务回滚相关参数及视图
/******相关参数****/fast_start_parallel_rollback1.取值有3种:false,low,high2.各值含义:false ---禁用并行回滚功能 ...
- spring事务回滚无法捕捉
这篇文章讲解了怎么配置才能让spring事务捕捉异常 http://www.360doc.com/content/12/1109/18/6161903_246870991.shtml 需要正确配置sp ...
随机推荐
- JavaWeb-SpringSecurity自定义登陆配置
系列博文 项目已上传至guthub 传送门 JavaWeb-SpringSecurity初认识 传送门 JavaWeb-SpringSecurity在数据库中查询登陆用户 传送门 JavaWeb-Sp ...
- JavaWeb_(Struts2框架)Servlet与Struts区别
JavaWeb_(SSH)使用Servlet实现用户的登陆 传送门 JavaWeb_(SSH)使用Struts框架实现用户的登陆 传送门 MySQL数据库中存在Gary用户,密码为123:第一次登陆时 ...
- 前端 Jenkins 自动化部署
这两天折腾了一下 Jenkins 持续集成,由于公司使用自己搭建的 svn 服务器来进行代码管理,因此这里 Jenkins 是针对 svn 服务器来进行的配置,Git 配置基本一致,后面也介绍了下针对 ...
- Robotframework之SSHLibrary库
Robotframework之SSHLibrary库 使用robotframework做自动化测试,在流程中可能需要远程连接机器做一些简单操作,比如连接linux服务器,外面平时用的工具去连接 ...
- Warning: setcookie() expects parameter 3 to be long, string given
Warning: setcookie() expects parameter 3 to be long, string given 这个是我用php7.0会报这个错误, 切换低版本php5.6就ok
- StringUtils字符串工具类左侧补齐(leftPad)、右侧补齐(rightPad)、左右两侧补齐(center)工具方法
这里使用的是 org.apache.commons.lang.StringUtils;下面是StringUtils工具类中字符串左侧补齐的方法,示例如下: //左侧补齐 第一个参数:原始字符串,第二个 ...
- Scope 'request' is not active for the current thread
Unable to instantiate Action, getUserAction, defined for 'getUser' in namespace '/'Error creating be ...
- Javascript 二维码生成库:QRCode
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jsonp 原理 并模拟实现一个简单的jsonp
jsonp产生的背景 1.从原网站向目标网站(服务端)发送ajax请的时候,由于浏览器的安全策略(这两个网站只要域名,端口,协议 有一个不同就不允许请求访问)导致跨域,从而请求无法正常进行. 2.We ...
- c++ STL之unordered_set
unordered_set的特点: 自身值就是主键,所以值唯一并且不可修改 基于hash表的无序排列 unordered_set基于哈希表,是无序的. 在一个 unordered_set 容器中,元素 ...