Spring 的事务管理是基于 AOP 实现的,而 AOP 是以方法为单位的。Spring 的事务属性分别为传播行为、隔离级别、只读和超时属性,这些属性提供了事务应用的方法和描述策略。

在 Java EE 开发经常采用的分层模式中,Spring 的事务处理位于业务逻辑层,它提供了针对事务的解决方案。

在 Spring 解压包的 libs 目录中,包含一个名称为 spring-tx-3.2.13.RELEASE.jar 的文件,该文件是 Spring 提供的用于事务管理的 JAR 包,其中包括事务管理的三个核心接口:PlatformTransactionManager、TransactionDefinition 和 TransactionStatus。

将该 JAR 包的后缀名 jar 改成 zip 的形式后,解压压缩包,进入解压文件夹中的 \org\springframework\transaction 目录后,该目录中的文件如下图所示。

上图中,方框所标注的三个文件是我们要学习的核心接口。这三个核心接口的作用及其提供的方法如下。

1. PlatformTransactionManager
PlatformTransactionManager 接口是 Spring 提供的平台事务管理器,用于管理事务。该接口中提供了三个事务操作方法,具体如下。

 TransactionStatus getTransaction(TransactionDefinition definition):用于获取事务状态信息。void commit(TransactionStatus status):用于提交事务。void rollback(TransactionStatus status):用于回滚事务。

在项目中,Spring 将 xml 中配置的事务详细信息封装到对象 TransactionDefinition 中,然后通过事务管理器的 getTransaction() 方法获得事务的状态(TransactionStatus),并对事务进行下一步的操作。

2. TransactionDefinition
TransactionDefinition 接口是事务定义(描述)的对象,它提供了事务相关信息获取的方法,其中包括五个操作,具体如下。

 String getName():获取事务对象名称。int getIsolationLevel():获取事务的隔离级别。int getPropagationBehavior():获取事务的传播行为。int getTimeout():获取事务的超时时间。boolean isReadOnly():获取事务是否只读。

在上述五个方法的描述中,事务的传播行为是指在同一个方法中,不同操作前后所使用的事务。

传播行为的种类


在事务管理过程中,传播行为可以控制是否需要创建事务以及如何创建事务。

通常情况下,数据的查询不会改变原数据,所以不需要进行事务管理,而对于数据的增加、修改和删除等操作,必须进行事务管理。如果没有指定事务的传播行为,则 Spring3 默认的传播行为是 required。

3. TransactionStatus
TransactionStatus 接口是事务的状态,它描述了某一时间点上事务的状态信息。其中包含六个操作。

事务的操作

名称 说明
void flush() 刷新事务
boolean hasSavepoint() 获取是否存在保存点
boolean isCompleted() 获取事务是否完成
boolean isNewTransaction() 获取是否是新事务
boolean isRollbackOnly() 获取是否回滚
void setRollbackOnly() 设置事务回滚

Spring事务管理接口相关推荐

  1. Spring有几种事务管理,Spring事务管理接口是什么

    1,spring有两种事务管理方式:①编程式  ②声明式.编程式的比较灵活,但是代码量大,存在重复的代码比较多:而声明式事务管理比编程式更灵活方便. 基于AOP的声明式事务管理,实质就是在方法执行前后 ...

  2. 什么是事务的传播_这么漂亮的Spring事务管理详解,你不来看看?

    事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用 ...

  3. 多数据源 事务管理_可能是最漂亮的Spring事务管理详解

    事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用 ...

  4. batch spring 重复执行_可能是最漂亮的Spring事务管理详解

    作者:Guide哥 事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完 ...

  5. Spring事务管理详解

    什么是事务 事务是逻辑上的一组操作,要么都执行,要么都不执行. 需要注意的是:事务能否生效数据库引擎是否支持事务是关键.比如常用的 MySQL 数据库默认使用支持事务的 innodb引擎.但是,如果把 ...

  6. Spring 事务管理的详细讲解及使用

    文章目录 一. Spring 事务管理简介 二.Spring 事务管理器 1.Spring 事务管理接口 1.1. PlatformTransactionManager 接口 1.2. Transac ...

  7. spring事务管理一:关于事务管理的接口

    2019独角兽企业重金招聘Python工程师标准>>> spring事务管理主要有三个接口: 事务管理器接口:PlatformTransactionManager.可以为不同的框架提 ...

  8. Spring事务管理 与 SpringAOP

    1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略.  ...

  9. Spring 事务管理高级应用难点剖析

    Spring 事务管理高级应用难点剖析: 第 1 部分 http://www.ibm.com/developerworks/cn/java/j-lo-spring-ts1/index.html htt ...

最新文章

  1. 卷积神经网络系列之卷积/池化后特征图大小怎么计算??
  2. MyBatis关键配置-接口的扫描注册
  3. [Unity] FlowCanvas 使用注意事项
  4. 802.1X和NAP整合实验手册
  5. 2020年了,JavaScript依然是前端最受欢迎的语言吗?
  6. 新商业模式 私下销售 Private Sales Gilt Groupe年营收1.5亿
  7. kutools for word 10(Word工具箱) 附安装教程
  8. 正确的座机号码格式_固定电话的格式
  9. java 引号_java中单引号和双引号有什么区别
  10. TOF相机(Time of Fight Camera)(维基百科全翻译版)
  11. 基于Salt Event系统构建Master端returner
  12. iapp禁止抓包软件代码
  13. 查看android端BKS类型的证书库
  14. 暑假假期训练总结-26
  15. Maximal submatrix
  16. 从CNCB下载单细胞转录组fastq文件并定量
  17. 【免费资源必备】LingoDeer,扫描全能王直装版等五款APP让你享受上千个免费资源
  18. 利用谷歌镜像网站编辑Latex的参考文献与doi链接
  19. JS获取时间戳 10位数时间戳
  20. 华为硬件工程师社招机考题库_华为电子软硬件工程师招聘笔试题

热门文章

  1. python日期迭代_计算敏捷项目中迭代时间安排(Python3版)
  2. 笔记本 win11 64位专业版iso文件v2021.07
  3. 新版本xx Chrome等主流浏览器将不再允许关闭点击跟踪
  4. Android平台基于RTMP或RTSP的一对一音视频互动技术方案探讨
  5. 日志中出现乱码_合宙Luat | 乱码搞得一团糟?开源神器帮你轻松修复
  6. SVN提交时出现locked错误解决办法
  7. Error running ‘Tomcat‘: Unable to open debugger port (127.0.0.1:2148): java.net.SocketExceptio
  8. mybatis 一对多查询 按结果嵌套处理、按查询嵌套处理,以及两者之间的区别
  9. Java核心类库篇7——多线程
  10. vue 加载太慢_Vue首页加载过慢 解决方案