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

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,

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

本文内容到此结束了, 如有收获欢迎点赞????收藏????关注??,您的鼓励是我最大的动力。 如有错误?疑问????欢迎各位大佬指出。 主页:共饮一杯无的博客汇总?????????

保持热爱,奔赴下一场山海。????????????

代替你主持夕阳的葬礼。

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

相关文章:

你感兴趣的文章:

标签云: