Spring事务属性概述

Spring的声明性事务是通过注解@Transactional来实现的。在该注解类中定义了事务的属性,可以通过修改这些属性来控制应用中的事务。

事务的传播类型

事务传播类型定义 传播类型描述
PROPAGATION_REQUIRED 支持当前事务,若当前不存在事务则创建一个新事务。Spring的默认传播类型。
PROPAGATION_SUPPORTS 支持当前事务,若当前不存在事务则以非事务的方式执行。
PROPAGATION_MANDATORY 支持当前事务,若当前不存在事务则抛出异常。
PROPAGATION_REQUIRES_NEW 创建一个新事务,若当前存在事务则挂起当前事务。
PROPAGATION_NOT_SUPPORTED 不支持当前事务,始终以非事务的方式执行。
PROPAGATION_NEVER 不支持当前事务,若当前存在事务则抛出异常。
PROPAGATION_NESTED 若当前存在事务则以嵌套事务方式执行,否则传播行为类似于PROPAGATION_REQUIRED。

事务隔离级别

事务隔离级别定义 隔离级别描述
ISOLATION_DEFAULT 使用底层数据存储的默认隔离级别。所有其他级别都对应于JDBC隔离级别。Spring的默认隔离级别。
ISOLATION_READ_UNCOMMITTED 可能会发生脏读、不可重复读和幻像读。该级别允许一个事务更改的行在提交该行中的任何更改之前被另一个事务读取,即脏读。如果任何更改被回滚,第二个事务将检索到无效行。
ISOLATION_READ_COMMITTED 禁止脏读,可能会发生不可重复读取和幻读。该级别仅禁止事务读取包含未提交更改的行。Oracle数据库的默认隔离级别。
ISOLATION_REPEATABLE_READ 禁止脏读和不可重复读,可能会发生幻读。该级别禁止事务读取未提交更改的行,也禁止一个事务读取行,第二个事务更改行,第一个事务重新读取行,第二次获得不同的值的情况。MySQL数据库的默认隔离级别。
ISOLATION_SERIALIZABLE 禁止脏读、不可重复读和幻读。并发执行效率低下。

事务超时定义

事务的超时设置,默认为底层数据库事务系统的默认超时时间,若不支持超时,则不支持,时间单位为秒。

事务的只读定义

事务的只读属性是指,对事务性资源进行只读操作或者是读写操作。若确定对事务相关的资源仅仅只进行读取操作,则可以将事务标志为只读的,以提高事务处理的性能。

回滚规则定义

该规则定义了哪些异常类(Throwable的子类型)会进行事务回滚,哪些不会。默认情况下,事务只有在遇到运行时异常才会回滚,遇到受检查的异常(如业务异常)则不会回滚,但是可以自定义事务在遇到哪些受检查异常时像遇到运行时异常时那样回滚,同理也可以定义在 遇到哪些受检查异常时不需要回滚。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring 事务属性分析 事务管理对于企业应用而言至关重要。它保证了用户的每一次操作都是可靠的,即便出现了异常的...
    壹点零阅读 1,417评论 0赞 2
  • 一、事务简单介绍 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。 1.1 事...
    tuacy阅读 117,318评论 11赞 110
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 16,231评论 2赞 11
  • 什么是事务 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事务的特性 原子性: 事务是最小的执行单位,不允许...
    Ifthe_1da7阅读 590评论 0赞 0
  • 想起了2017年帮办暂住证的时候,帮助有一个男的一起看作品,暂住证,没有带钱,我给了他钱去复印。我又种下了一颗好种...
    宇宙女神o胡琳o灵儿阅读 132评论 0赞 0

友情链接更多精彩内容