spring mvc controller控制器如何控制service层事务
Controller层:
myService.do(bean);
myService层:
service.do(Bean bean)
{
开始事务
myService.save(bean);
myService.update(bean);
update...
结束事务
return ;
}
问题1:以上是传统的纯粹程序代码控制事务的情况,对吗?
问题2:
引用链接的最后提到 “springmvc可以注解式事务管理,可以声明式事务管理”,这是框架提供的控制事务的解决办法吗?能否通俗解释一下这2个名词,谢谢?
问题3:
如果有一个复杂的多表操作的业务逻辑,比如:
开始
insert A表---1
update B表 ---2
判断操作/其他操作
---3
if(条件1){
update A表
}else{
update C表
}
update D表 --4
结束
如果操作4不成功,那应该算是一个事务不完成,应该3,2,1都回滚才对,是吗?是的话如何控制呢
1、对
2、先说下声明式:你通过spring 配置来声明事务,可以明确你具体需要事务控制的方法,但是是你手动配置
注解式:事务交由spring来管理,你只需要在你需要事务的方法/类 上面加上注解就行了
这两者的区别,你可以专门去搜一下
注解式和声明式详解
3、是的,4不成功,123都会回滚 。具体操作的话,注解式就很简单
听说注解:
@Transactional( rollbackFor={Exception.class,RuntimeException.class})
可以自定义控制事务回滚,在某个方法内
throw new Exception("test")
可以整个方法回滚。