当前位置 : 主页 > 编程语言 > java >

Spring 的事务传播特性和隔离级别

来源:互联网 收集:自由互联 发布时间:2022-07-13
spring事务的传播级别 PROPAGATION_REQUIRED:Spring的默认传播级别,如果上下文中存在事务则加入当前事务,如果不存在事务则新建事务执行。PROPAGATION_SUPPORTS:如果上下文中存在事务则加入

spring事务的传播级别

PROPAGATION_REQUIRED:Spring的默认传播级别,如果上下文中存在事务则加入当前事务,如果不存在事务则新建事务执行。PROPAGATION_SUPPORTS:如果上下文中存在事务则加入当前事务,如果没有事务则以非事务方式执行。PROPAGATION_MANDATORY:该传播级别要求上下文中必须存在事务,否则抛出异常。PROPAGATION_REQUIRES_NEW:该传播级别每次执行都会创建新事务,并同时将上下文中的事务挂起,执行完当前线程后再恢复上下文中事务。(子事务的执行结果不影响父事务的执行和回滚)PROPAGATION_NOT_SUPPORTED:当上下文中有事务则挂起当前事务,执行完当前逻辑后再恢复上下文事务。(降低事务大小,将非核心的执行逻辑包裹执行。)PROPAGATION_NEVER:该传播级别要求上下文中不能存在事务,否则抛出异常。PROPAGATION_NESTED:嵌套事务,如果上下文中存在事务则嵌套执行,如果不存在则新建事务。(save point概念)

事务隔离级别

脏读:读取到了别的事务回滚前的数据,例如B事务修改数据库X,在未提交前A事务读取了X的值,而B事务发生了回滚。不可重复读:一个事务在两次读取同一个数据的值不一致。例如A事务读取X,在中间过程中B事务修改了X的值,事务A再次读取X时值发生了改变。幻读:查询得到的数据条数发生了改变,例如A事务搜索数据时有10条数据,在这时B事务插入了一条数据,A事务再搜索时发现数据有11条了。数据隔离级别read-uncommitted:未提交读(脏读、不可重复读、幻读)read-committed:已提交读(不可重复读、幻读),大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。repeatable-read:可重复读(幻读),保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。serializable:串行化最严格的级别,事务串行执行,资源消耗最大

Spring事务传播和隔离级别配置

@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class,timeout=1,isolation=Isolation.DEFAULT)

事务的传播性:@Transactional(propagation=Propagation.REQUIRED) 如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)事务的超时性:@Transactional(timeout=30) //默认是30秒事务的隔离级别:@Transactional(isolation = Isolation.READ_UNCOMMITTED)**回滚指定异常类**:@Transactional(rollbackFor={RuntimeException.class,br/>**回滚指定异常类**:@Transactional(rollbackFor={RuntimeException.class,

相关文章:事务的四大特性 事务的隔离级别详解

本文内容到此结束了, 如有收获欢迎点赞

上一篇:#yyds干货盘点# leetcode算法题:N 皇后
下一篇:没有了
网友评论