2018-04-19Spring事务

spring事务分为:5大隔离级别(数据库4大隔离级别) 7大传播属性

隔离级别理解就是对数据操作的隔离性操作,脏读  重复读 幻读   传播属性:就是事务的支持  默认是 支持当前事务如果B 没有事务创建一个一样的事务   多种不同的事务支持方式(还有可以能多种事务如果一个事务成功了,其他的失败了成功的提交失败的回滚)    

数据库数据要保持数据的:原子性 一致性 隔离性 持久性 

MySQL数据库为我们提供的四种隔离级别:

  ① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。a 修改数据 但是b 加了一条数据  没有批量修改到

  ② Repeatable read (可重复读):可避免脏读、不可重复读的发生。  a 

  ③ Read committed (读已提交):可避免脏读的发生。a 读数据了 b去修改了 a 再去读数据修改了

  ④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。 a 读没提交,b读数据了 a 又回滚了

Spring事务的传播属性

由上图可知,Spring定义了7个以PROPAGATION_开头的常量表示它的传播属性。

名称值解释

PROPAGATION_REQUIRED0支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择,也是Spring默认的事务的传播。

PROPAGATION_SUPPORTS1支持当前事务,如果当前没有事务,就以非事务方式执行。

PROPAGATION_MANDATORY2支持当前事务,如果当前没有事务,就抛出异常。

PROPAGATION_REQUIRES_NEW3新建事务,如果当前存在事务,把当前事务挂起。

PROPAGATION_NOT_SUPPORTED4以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

PROPAGATION_NEVER5以非事务方式执行,如果当前存在事务,则抛出异常。

PROPAGATION_NESTED6如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。

Spring事务的隔离级别

名称值解释

ISOLATION_DEFAULT-1这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。另外四个与JDBC的隔离级别相对应

ISOLATION_READ_UNCOMMITTED1这是事务最低的隔离级别,它充许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻读。

ISOLATION_READ_COMMITTED2保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。

ISOLATION_REPEATABLE_READ4这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻读。

ISOLATION_SERIALIZABLE8这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻读。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 很多人喜欢这篇文章,特此同步过来 由浅入深谈论spring事务 前言 这篇其实也要归纳到《常识》系列中,但这重点又...
    码农戏码阅读 4,791评论 2 59
  • Spring 事务属性分析 事务管理对于企业应用而言至关重要。它保证了用户的每一次操作都是可靠的,即便出现了异常的...
    壹点零阅读 1,334评论 0 2
  • 《琴》高山独曲送仙声,流水红尘留美名。 盘道友谊歌永志,向天交往探深魂。 知音旋律青春记,韵味韶华生死心。 豪情荡...
    万里千年阅读 3,143评论 50 63
  • 距离自己高考已经十年,正好十年! 但每每回忆起那段日子,都觉得热血沸腾,充满青春的力量。 记得自己真正...
    藏着糖的小手帕阅读 369评论 0 1
  • 有些事情好像就是不能玩… 我想着,和你玩。可是好像不只是玩…
    洛崎Echo阅读 169评论 0 0