您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

Spring事务传播机制

一、事务

注:Spring原理是不存在事务之说的,事务是对于数据库来说的。例如:mysql,Oracle等。
事务常见名词:

  1. 脏读:指事务在处理过程当中读取到了另外事务未提交的数据。
  2. 不可重复读:指在一个事务范围内,多次查询某个数据时得到的结果不相同。
  3. 幻读:指事务在对某行数据更改时,同时别的事务插入了相同的值,这样再读取数据时会产生数据没有更改的错觉。

事务隔离级别:

  1. Serializable(串行化):代价最高且最可靠的隔离级别,当出现读写锁时。后面的事务必须要等到上个事务执行完成。
  2. Repeatable read(可重复读):多次读取同一范围的数据并且返回第一次查询结果。默认级别。
  3. Read committed(读已提交):保证一个事务提交之后才被另一个事务读取。
  4. Read uncommitted(读未提交):当事务还没提交时,做的变更就能被别的事务看到。

二、Spring事务传播机制

REQUIRED(默认事务传播):
支持事务,当业务在执行业务时,加入当期事务/重新开一个事务,当外层事务提交时,内层事务才可以被提交;若内/外层报错则一起回滚代码,如果内层报错及时使用了try catch则也会回滚事务
REQUIRES_NEW:
支持事务,每次都创建一个新事务,当当前已在任务列表中则会挂起新事务,内层事务结束内层就提交,不用等待外层。内/外层报错互相不影响。若内层报错 回滚,抛出异常,外层没有捕获该异常则外层也会回滚。
NESTED:
支持事务,若当前已在事务当中则嵌套到已有事务中作为子事务,若不存在则新开一个事务。事务在提交时会和外层事务一起提交,外层回滚则内层也回滚事务,若内层回滚事务,外层不受影响。
SUPPORTS:
支持事务,若存在事务就支持事务,不存在则没有事务处理,不会新开启一个事务。
MANDATORY:
支持事务,当业务执行时已存在一个事务就加入,否则就报错。
NOT_SUPPORTED:
不支持事务,当业务执行当中存在事务,则将事务挂起,等方法执行完毕在 恢复事务。
NEVER:
不支持事务,如果存在一个事务则报错处理。


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进