首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring 事务管理-二

2012-10-26 
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系统异常处理有问题

















      



      


热点排行