Spring 事务回滚机制
2017-02-08 18:04
337 查看
异常回滚示例
1.捕获异常,不抛出,事务不能回滚!!!
2.捕获异常,抛出运行时异常,回滚。当一个方法出错,另一个方法必然回滚
3.捕获异常,手动回滚
1.捕获异常,不抛出,事务不能回滚!!!
if(userSave){
try{
userDao.save(user);
userCapabilityQuotaDao.save(capabilityQuota);
}catch(Exceptione){
logger.info("能力开通接口,开户异常,异常信息:"+e);
}
}
2.捕获异常,抛出运行时异常,回滚。当一个方法出错,另一个方法必然回滚
if(userSave){
try{
userDao.save(user);
userCapabilityQuotaDao.save(capabilityQuota);
}catch(Exceptione){
logger.info("能力开通接口,开户异常,异常信息:"+e);
thrownewRuntimeException();
}
}
3.捕获异常,手动回滚
if(userSave){
try{
userDao.save(user);
userCapabilityQuotaDao.save(capabilityQuota);
}catch(Exceptione){
logger.info("能力开通接口,开户异常,异常信息:"+e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
异常事务回滚
解决方案:
方案1.
例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加thrownewRuntimeException()语句,
以便让aop捕获异常再去回滚,并且在service上层(webservice客户端,view层action)要继续捕获这个异常并处理
方案2.
在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,
这样上层就无需去处理异常
相关文章推荐
- Spring transaction事务的roll back回滚机制
- spring的事务提交与回滚机制
- spring jpa 中事物管理的一个测试用例,看看嵌套事务的回滚机制
- spring事物回滚机制 (事务异常回滚,捕获异常不抛出就不会回滚)
- Spring 使用注解方式进行事务管理--注解回滚机制
- spring事物回滚机制 (事务异常回滚,捕获异常不抛出就不会回滚)
- Spring的事务回滚机制
- Spring回滚事务机制与创建数组的语法,Object[] params = new Object[]{值}
- Spring事务回滚机制
- Spring 事务回滚机制
- Spring事务传播机制和数据库隔离级别
- Spring的AOP事务管理默认针对unchecked异常回滚
- 强制回滚spring事务
- Spring中Transactional不添加rollbackFor等属性时的事务回滚问题
- Spring 2.0声明式事务管理让你的事务轻松回滚!
- (MySQL)Spring3+Mybatis3使用注解式事务声明(@Transactional)无法回滚
- spring 声明式事务管理 事务不回滚
- spring 中的声明式事务不回滚 请高手帮忙解决一下 谢谢!
- Spring实现iBATIS事务回滚
- Spring的AOP和事务管理机制概览