美文网首页
spring 事务管理抽象

spring 事务管理抽象

作者: 不迷失 | 来源:发表于2016-06-15 19:25 被阅读167次

Spring提供了一致的事务管理抽象。这个抽象是Spring最重要的抽象之一, 它有如下的优点:

为不同的事务API提供一致的编程模型,如JTA、JDBC、Hibernate、iBATIS数据库层 。

提供比大多数事务API更简单的,易于使用的编程式事务管理API

整合Spring数据访问抽象

支持Spring声明式事务管理

JDBC事务容易使用,但也有明显的缺点:它们不能用于多个事务性资 源,并且趋向侵入的编程模型。

Spring解决了这些问题。它使应用开发者能够使用在任何环境 下使用一致的编程模型。你可以只写一次你的代码,这在不同环境 下的不同事务管理策略中很有益处。Spring同时提供声明式和编程式事务管理。

使用编程式事务管理,开发者直接使用Spring事务抽象,这个抽象可以使用在任何 底层事务基础之上。使用首选的声明式模型,开发者通常书写很少的事务相关代 码,因此不依赖Spring或任何其他事务API。

Spring事务抽象的关键是事务策略的概念。

这个概念由 org.springframework.transaction.PlatformTransactionManager
接口体现,如下:
public interface PlatformTransactionManager { TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException; void commit(TransactionStatus status) throws TransactionException; void rollback(TransactionStatus status) throws TransactionException; }

这首先是一个SPI接口,虽然它也可以在编码中使用。注意按照Spring的哲学, 这是一个接口。因而如果需要它可以很容易地被模拟和 桩化。它也没有和一个查找策略如JNDI捆绑在一起:PlatformTransactionManager 的实现定义和其他Spring IoC容器中的对象一样。这个好处使得即使使用JTA,也 是一个很有价值的抽象:事务代码可以比直接使用JTA更加容易测试。

继续Spring哲学,TransactionException
是unchecked的。 低层的事务失败几乎都是致命。很少情况下应用程序代码可以从它们 中恢复,不过应用开发者依然可以捕获并处理TransactionException

getTransaction()
根据一个类型为 TransactionDefinition
的参数返回一个 TransactionStatus
对象。返回的 TransactionStatus
对象可能代表一个新的或已经存在的事 务(如果在当前调用堆栈有一个符合条件的事务)。
一个TransactionStatus
也是和执 行的线程关联的。

TransactionDefinition
接口指定:

事务隔离:当前事务和其它事务的隔离的程度。 例如,这个事务能否看到其他事务未提交的写数据?

事务传播:通常在一个事务中执行的 所有代码都会在这个事务中运行。但是,如果一个事务上下文已经存在, 有几个选项可以指定一个事务性方法的执行行为:例如,简单地在现有的 事务中运行(大多数情况);或者挂起现有事务,创建一个新的事务。

事务超时: 事务在超时前能运行多 久(自动被底层的事务基础设施回滚)。

只读状态: 只读事务不允许修改任何数 据。只读事务在某些情况下是一种非常有用的优化。

这些设置反映了标准概念。如果需要,请查阅讨论事务隔离层次和其他核心事 务概念的资源:理解这些概念在使用Spring和其他事务管理解决方案时是非常关键的。

TransactionStatus
接口为处理事务的代码提供一个简单 的控制事务执行和查询事务状态的方法。这个概念应该是熟悉的,因为它们在所 有的事务API中是相同的:
public interface TransactionStatus { boolean isNewTransaction(); void setRollbackOnly(); boolean isRollbackOnly(); }
但是使用Spring事务管理时,定义 PlatformTransactionManager
的实现是基本方式。在好的Spring 风格中,这个重要定义使用IoC实现。

微信公众号: java技术*
技术交流群*: 245130488

相关文章

  • Spring | Spring中如何支持事务

    Spring中的事务管理 Spring在不同的事务管理API之上定义了一个抽象层,我们不必了解底层的事务管理API...

  • Spring对事务管理的支持4

    Spring对事务管理的支持## Spring 为事务管理提供一致的编程模板,在高层次建立统一的事务抽象。不管选择...

  • spring事务管理

    spring事务管理设计理念的核心原则就是:让事务管理关注点和数据访问关注点分离开来。 spring的事务抽象主要...

  • spring 事务管理抽象

    Spring提供了一致的事务管理抽象。这个抽象是Spring最重要的抽象之一, 它有如下的优点: 为不同的事务AP...

  • 关于spring中事务管理的几件小事

    1.Spring中的事务管理 作为企业级应用程序框架,Spring在不同的事务管理API之上定义了一个抽象层。而应...

  • Spring事务管理

    Spring框架为事务管理提供了一致的抽象,可以带来以下好处: Java Transaction API(JTA)...

  • Spring中的AOP事务

    【目录】1 Spring的事务管理机制2 Spring事务管理两种方式 1 Spring的事务管理机制 Sprin...

  • spring事务

    1、spring事务管理器PlatformTransactionManager 1.1、没有spring事务管理器...

  • Spring事务管理只对出现运行期异常进行回滚

    使用spring难免要用到spring的事务管理,要用事务管理又会很自然的选择声明式的事务管理,在spring的文...

  • Spring事务相关

    18.7.2 概述 Spring Framework对事务管理提供了一致的抽象,其特点如下:为不同的事务API提供...

网友评论

      本文标题:spring 事务管理抽象

      本文链接:https://www.haomeiwen.com/subject/djjpdttx.html