动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Spring事务管理核心接口详解

08-18 17:32 210浏览
举报 T字号
  • 大字
  • 中字
  • 小字

事务就是对一系列的数据库操作进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。同样,Spring事务管理Spring中数据的处理起到了至关重要的作用。而Spring事务管理的核心内容就是Spring事务管理核心接口

在实际开发中,操作数据库时都会涉及到事务管理问题,为此Spring提供了专门用于事务处理的API。Spring 的事务管理简化了传统的事务管理流程,并且在一定程度上减少了开发者的工作量。Spring中事务管理机制,一般是使用TransactionMananger进行管理,可以通过Spring的注入来完成此功能。

图述Spring事务管理的核心接口

 

Spring用于事务管理的依赖包: spring-tx-4.3.6.RELEASE 的JAR包,在该JAR包的org.springframework.transaction包中,有3个接口文件PlatformTransactionManager、TransactionDefinition TransactionStatus 。

  • PlatformTransactionManager

 PlatformTransactionManager即平台事务管理器,它是事务的核心接口,主要用于管理事务。该接口中提供了三个事务操作的方法,具体如下:

TransactionStatus getTransaction(TransactionDefinition definition):用于获取事务状态信息

void commit(TransactionStatus status):用于提交事务

void rollback(TransactionStatus status):用于回滚事务

 在上面的3个方法中,getTransaction(TransactionDefinition definition)方法会根据TransactionDefinition参数返回一个TransactionStatus对象,TransactionStatus对象就表示一个事务,它被关联在当前执行的线程上。PlatformTransactionManager接口只是代表事务管理的接口,并不知道底层是如何管理事务的,具体如何管理事务则由它的实现类来完成。该接口常见的几个实现类如下:

其中前两个只支持单一数据源,JtaTransactionManager支持多数据源。比如说实际中一个数据库在A地,另一个数据库在B地。要想封装这两个数据库为同一个事务,就只能使用JtaTransactionManager。当底层采用不同的持久层技术时,系统只需要使用不同的PlatformTransactionManager实现类即可。

  • TransactionDefinition

TransactionDefinition接口是事务定义(描述) 的对象,该对象中定义了事务规则,并提供了获取事务相关信息的方法。TransactionDefinition用于描述事务的隔离级别、超时时间、是否为只读事务和事务传播规则等控制事务具体行为的事务属性,这些事务属性可以通过XML配置或注解描述提供,也可以通过手工编程的方式设置。

String getName();获取事务对象名称

int getIsolationLevel();获取事务的隔离级别

int getPropagationBehavior();获取事务的传播行为

int getTimeout();获取事务的超时时间

boolean isReadOnly();获取事务是否只读

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

在事务管理过程中,传播行为可以控制是否需要创建事务以及如何创建事务,通常情况下,数据的查询不会影响原数据的改变,所以不需要进行事务管理,而对于数据的插入、更新和删除操作,必须进行事务管理。如果没有指定事务的传播行为,Spring默认传播行为是REQUIRED。

  • TransactionStatus

TransactionStatus接口是事务的状态,它描述了某一时间点上事务的状态信息。该接口中包含6个方法, 具体如下:

void flush();刷新事务

boolean hasSavepoint();获取是否存在保存点

boolean isCompleted();获取事务是否完成

boolean isNewTransaction();获取是否为新事务

boolean isRollbackOnly();获取事务是否回滚

void setRollbackOnly();设置事务回滚,通过该标识通知事务管理器只能将事务回滚,事务管理器将通过显式调用回滚命令或抛出异常的方式回滚事务。

其实,总的来说,Spring事务管理核心接口只有三个,似乎只要稍微花一点时间并不难掌握。但里面涉及到的东西还是不少的,至少我们需要耗时去加深理解,才能说自己完全掌握了Spring事务管理核心接口。当然,这只是学习Spring框架的一个小小挑战,还有更多的复杂的知识在未知的未来等着我们学习和探索!

0人推荐
共同学习,写下你的评论
0条评论
jessy
程序员jessy

13篇文章贡献65011字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消