Spring事务管理接口
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事务管理接口相关推荐
- Spring有几种事务管理,Spring事务管理接口是什么
1,spring有两种事务管理方式:①编程式 ②声明式.编程式的比较灵活,但是代码量大,存在重复的代码比较多:而声明式事务管理比编程式更灵活方便. 基于AOP的声明式事务管理,实质就是在方法执行前后 ...
- 什么是事务的传播_这么漂亮的Spring事务管理详解,你不来看看?
事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用 ...
- 多数据源 事务管理_可能是最漂亮的Spring事务管理详解
事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用 ...
- batch spring 重复执行_可能是最漂亮的Spring事务管理详解
作者:Guide哥 事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完 ...
- Spring事务管理详解
什么是事务 事务是逻辑上的一组操作,要么都执行,要么都不执行. 需要注意的是:事务能否生效数据库引擎是否支持事务是关键.比如常用的 MySQL 数据库默认使用支持事务的 innodb引擎.但是,如果把 ...
- Spring 事务管理的详细讲解及使用
文章目录 一. Spring 事务管理简介 二.Spring 事务管理器 1.Spring 事务管理接口 1.1. PlatformTransactionManager 接口 1.2. Transac ...
- spring事务管理一:关于事务管理的接口
2019独角兽企业重金招聘Python工程师标准>>> spring事务管理主要有三个接口: 事务管理器接口:PlatformTransactionManager.可以为不同的框架提 ...
- Spring事务管理 与 SpringAOP
1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略. ...
- Spring 事务管理高级应用难点剖析
Spring 事务管理高级应用难点剖析: 第 1 部分 http://www.ibm.com/developerworks/cn/java/j-lo-spring-ts1/index.html htt ...
最新文章
- 卷积神经网络系列之卷积/池化后特征图大小怎么计算??
- MyBatis关键配置-接口的扫描注册
- [Unity] FlowCanvas 使用注意事项
- 802.1X和NAP整合实验手册
- 2020年了,JavaScript依然是前端最受欢迎的语言吗?
- 新商业模式 私下销售 Private Sales Gilt Groupe年营收1.5亿
- kutools for word 10(Word工具箱) 附安装教程
- 正确的座机号码格式_固定电话的格式
- java 引号_java中单引号和双引号有什么区别
- TOF相机(Time of Fight Camera)(维基百科全翻译版)
- 基于Salt Event系统构建Master端returner
- iapp禁止抓包软件代码
- 查看android端BKS类型的证书库
- 暑假假期训练总结-26
- Maximal submatrix
- 从CNCB下载单细胞转录组fastq文件并定量
- 【免费资源必备】LingoDeer,扫描全能王直装版等五款APP让你享受上千个免费资源
- 利用谷歌镜像网站编辑Latex的参考文献与doi链接
- JS获取时间戳 10位数时间戳
- 华为硬件工程师社招机考题库_华为电子软硬件工程师招聘笔试题
热门文章
- python日期迭代_计算敏捷项目中迭代时间安排(Python3版)
- 笔记本 win11 64位专业版iso文件v2021.07
- 新版本xx Chrome等主流浏览器将不再允许关闭点击跟踪
- Android平台基于RTMP或RTSP的一对一音视频互动技术方案探讨
- 日志中出现乱码_合宙Luat | 乱码搞得一团糟?开源神器帮你轻松修复
- SVN提交时出现locked错误解决办法
- Error running ‘Tomcat‘: Unable to open debugger port (127.0.0.1:2148): java.net.SocketExceptio
- mybatis 一对多查询 按结果嵌套处理、按查询嵌套处理,以及两者之间的区别
- Java核心类库篇7——多线程
- vue 加载太慢_Vue首页加载过慢 解决方案