`
chenchh
  • 浏览: 60760 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring事务抽象

阅读更多

    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接口,虽然它也可以在编程中使用。它也没有和一个查找策略如JNDI捆绑在一起:PlatformTransactionManager的实现定义和其他Spring IoC容器中的对象一样。这个好处使得即使使用JTA,事务代码也可以比直接使用JTA更加容易测试。

    PlatformTransactionManager接口中每个方法都跑出的TransactionException是unchecked exception(继承自java.lang.RuntimeException)的。底层的事务失败几乎总是致命的。很少情况下应用程序代码可以从它们中恢复,不过应用开发者依然可以捕获并处理TransactionException。

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

   TransactionDefinition接口指定了:

  • 事务隔离:当前事务和其他事务的隔离程度。例如,这个事务能否看到其他事务未提交的写数据。
  • 事务传播:通常一个事务中执行的所有代码都会在这个事务中运行。但是如果一个事务上下文已经存在,有几个选项可以指定一个事务性方法的执行行为:例如,简单的在现有的事务中继续运行(大多数情况);或者挂起现有事务,创建一个新的事务。Spring提供EJB CMT中常见的事务传播选项。
  • 事务超时:事务在超时前能运行多久(自动被底层的事务基础设施回滚)。
  • 只读状态:只读事务不修改任何数据。只读事务在某些情况下(例如使用Hibernate时),是一种非常有用的优化。

    TransactionStatus接口为处理事务的代码提供了一个简单的控制事务执行和查询事务状态的方法。这个概念在所有的事务API中是相同的:

public interface TransactionStatus{
    boolean isNewTransaction();

    void setRollbackOnly();

    boolean isRollbackOnly();
}
 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Spring事务原理、Spring事务配置的五种方式

    Spring事务原理和配置 Spring事务原理是指Spring框架中的一种机制,用于管理事务,并提供了多种配置方式。事务是指一系列的操作,作为一个整体执行,如果其中某个操作失败,整个事务将回滚。Spring事务原理围绕着两...

    spring事务详解

    理的抽象,最终打造了一套使用方便,却功能强大的事务管理“利器”。通过Spring的事务框架,我 们可以按照统一的编程模型来进行事务编程,却不用关心所使用的数据访问技术以及具体要访问什么 类型的事务资源。并且,...

    Spring2.5实现事务管理(本地事务、分布式事务).doc

    Spring 2.5 实现事务管理(本地事务、分布式事务) Spring 框架提供了对事务管理的支持,它可以使得事务的管理变得更加简洁和灵活。...通过使用 Spring 的事务管理器和抽象的 DAO,可以实现灵活、可维护的业务逻辑。

    Grails开源框架 - 使用指南

    不用重新启动服务器就可以进行重新加载利用内置的Spring 容器实现依赖注入基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持基于Spring事务抽象概念,实现事务服务层  借助于功能强大的Groovy动态...

    使用Grails快速开发Web应用.rar

    不用重新启动服务器就可以进行重新加载利用内置的Spring 容器实现依赖注入基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持基于Spring事务抽象概念,实现事务服务层  借助于功能强大的Groovy动态...

    GRails 中文帮助文档(参考手册)和安装开发介绍帮助

    基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态语言和领域特定语言(Domain Specific Language,DSL),以上那些特性变得非常易用。 这篇文档会向你介绍如何使用Grails框架来搭建Web应用程序...

    grails-docs-2.0.3.zip

    基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态语言和领域特定语言(Domain Specific Language,DSL),以上那些特性变得非常易用。 这篇文档会向你介绍如何使用Grails框架来搭建Web应用...

    Grails 教程

    基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态语言和领域特定语言(Domain Specific Language,DSL),以上那些特性变得非常易用。 这篇文档会向你介绍如何使用Grails框架来搭建Web应用程序...

    java中的Grails开源框架 - 使用指南(chm)

    基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态语言和领域特定语言(Domain Specific Language,DSL),以上那些特性变得非常易用。 这篇文档会向你介绍如何使用Grails框架来搭建Web应用程序...

    grails-开源框架使用指南

    基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态语言和领域特定语言(Domain Specific Language,DSL),以上那些特性变得非常易用。 这篇文档会向你介绍如何使用Grails框架来搭建Web应用程序...

    spring事务管理.rar

    声明式事务管理最大的优点在于开发者无须通过编程的方式来管理事务,只需在配置文件中进行相关的事务规则声明,就可以将事务规则应用到业务逻辑中。这使得开发人员可以更加专注

    JAVA(Spring)事务管理.doc

    Spring事务管理高层抽象主要包括3个接口: 1.PlatformTransactionManager//事务管理器 真正用来管理事务的接口,包含事务提交和回滚等信息; Spring为不同的持久层框架提供不同的PlatformTransactionManager接口实现...

    spring6pdf详细讲解

    在 Spring 中,GoF 之 factory 模式是指工厂模式、抽象工厂模式和简单工厂模式等。这些模式使得开发者可以编写更加灵活和可维护的代码。 在 Spring 中,JdbcTemplate 是框架的 JDBC 模块之一。 JdbcTemplate 提供了...

    高级开发spring面试题和答案.pdf

    面试高级开发的期间整理的面试题目,记录我面试遇到过的...Spring的事务是如何回滚的,实现原理; 抽象类和接口的区别,什么时候用抽象类什么时候用接口; StringBuilder和StringBuffer的区别 java值传递和引用传递

    Spring的学习笔记

    (三) XML文件形式配置Spring事务管理 37 四、 HibernateTemplate 38 (一) HibernateTemplate 38 (二) HibernateDaoSupport 39 第十一课:Spring整合-SSH 40 一、 第一步:加入jar包(需要的jar包列表) 40 二、 第二步...

    简单了解Spring中的事务控制

    主要介绍了简单了解Spring中的事务控制,事务是一组操作的执行单元,下面我们来简单学习一下吧

    Spring 2.0 开发参考手册

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...

    Spring面试题大全

    3. PlatformTransactionManager:这是Spring提供的用于管理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransactionManager,我们使用的事务管理类例如DataSourceTransactionManager等都是这个类的子类...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 ...

    Grails实战教程-整合版

    现如今,基于Java的网站开发明显过于复杂,远超实际工作需要。在Java领域中,大部分的网站开发框架也没有严格的遵循“可重用”原则。 动态框架如Rails,Django...一个基于Spring事务抽象的事务层 借助功能强大的Groovy

Global site tag (gtag.js) - Google Analytics