Spring 事务管理-二
Spring事务管理-2接 Spring 事务管理-11--在Spring中编写事务 1,事务的控制只能做到方法的级别。 2,所有的
Spring 事务管理-2
接 Spring 事务管理-1
1--在Spring中编写事务
1,事务的控制只能做到方法的级别。

2,所有的事务策略都是依靠5个参数来控制。
下面看看这5个参数

第一个 PROPAGATION
第二个 Isolation(隔离级别)

1 隔离级别定义一个事务可能受其他并发事务活动影响的程度

2 也可以想象为那个事务对于事务处理数据的自私程度
为什么要用隔离级别,因为并发导致了很多问题:
问题一Dirty read(脏读)
第三个 只读
第四个 事务超时
回滚规则
在默认设置下:事务只在出现运行异常(runtime exception)时回滚,而在出现受阻异常(checked exception)时不回滚 在控制狂的设置下,就会变化的。
容器启动事务:
1--insert一条数据
2--commit;
3--insert一条数据
4--insert
容器提交事务
1--不管发生了什么,1只有没错,1-insert永远插入
2--如果三或者四发生了运行异常并且没有捕捉,则三四都回滚
3--如果三或者四发生了运行异常且捕捉了,则若发生异常后面的全部回滚,发生异常前面的不回滚(注意:捕捉了!!)
如果第三条语句出现问题,并且异常被捕捉到了
则1--insert一条数据提交成功 ,commit 之后
如果没有捕获到或者说没有做catch的操作,
//只是在方法签名上做了throws动作,那么插入失败。
则3--insert
这是我在ibatis情况下测试的,自己借助ibatis手动控制事务,
如果事务交给了spring容器管理,
会不会在 3-insert 处发生异常进行全部回滚。
1,经过测试不论发生什么情况:1都会执行,并插入到数据库中去。
sql异常 RuntimeException 捕获不到的,所以XX系统异常处理有问题