`
tyny
  • 浏览: 75774 次
  • 性别: Icon_minigender_1
  • 来自: 黄冈
社区版块
存档分类
最新评论

程序中事务控制相关2

 
阅读更多

前一篇文章提到希望把事务从业务逻辑里面抽取出来,而且事务控制也是符合面向方面的规则的,通过artech的文章,我们可以很好的理解其中的原理,但是artech的事务辅助类还是需要参杂到业务里面,这里借助aop可以很方便的把事务的控制挪到业务的外围,实际上spring.net里面就是这样做的,spring.net在ado的事务控制方面借助的就是TransactionInterceptor这个方法拦截器,里面的代码大概如下

public object Invoke(IMethodInvocation invocation)
{
    // Work out the target class: may be <code>null</code>.
    // The TransactionAttributeSource should be passed the target class
    // as well as the method, which may be from an interface.
	Type targetType = ( invocation.This != null ) ? invocation.This.GetType() : null;

    // If the transaction attribute is null, the method is non-transactional.
	TransactionInfo txnInfo = CreateTransactionIfNecessary( invocation.Method, targetType );
	object returnValue = null;

	try
	{
        // This is an around advice.
        // Invoke the next interceptor in the chain.
        // This will normally result in a target object being invoked.
		returnValue = invocation.Proceed();
	} 
	catch ( Exception ex )
	{
        // target invocation exception
		CompleteTransactionAfterThrowing( txnInfo, ex );
        throw;
	} 
	finally
	{
		CleanupTransactionInfo( txnInfo );
	}
	CommitTransactionAfterReturning( txnInfo );
	return returnValue;
}
 
从代码和注释可以看到,事务的控制在业务方法执行的外围,在业务之前启动事务,如果有异常则回滚事务,正常情况下提交事务。里面的细节部分和artech的原理类似,但是spring.net里面略微复杂点,对于同一个数据库,他里面使用的是同一个连接以及连接上的事务,对于多数据库暂时还没明白,有空深入了解一下;同样对于artech的事务控制,由于自己对于CommittableTransaction不是很了解,虽然大意能明白,但是还是对于事务的细节不是特别了解,有空也得多学习。
分享到:
评论

相关推荐

    ibatis事务控制案例

    在IT行业中,数据库操作是应用程序的核心部分,而事务控制则是保证数据一致性与完整性的关键机制。本案例聚焦于`ibatis`(MyBatis前身)的事务管理,它是一个轻量级的Java持久层框架,提供了灵活的SQL映射功能。在...

    JdbcTemplate的事务控制.docx

    当使用`JdbcTemplate`结合Spring框架时,可以采用与原生JDBC事务控制类似的方法,但在Spring环境中进行管理。以下是一个使用Druid数据库连接池的示例代码: ```java @RequestMapping("/druidData1") public String ...

    事务在C#程序中的调用

    总结来说,在C#程序中调用事务时,我们需要理解事务的基本原理和ACID属性,利用`System.Transactions`提供的工具来管理和控制事务。在VS2010环境下,通过ADO.NET与数据库交互,可以轻松地实现事务处理,确保数据操作...

    Spring4+SpringMVC+Mybaties 内含有事务控制

    通过以上步骤,我们可以在Spring4、SpringMVC和MyBatis集成环境中实现事务控制,确保数据操作的正确性和一致性。在实际项目中,还需要结合具体业务场景,选择合适的事务策略,例如,分布式事务可能需要引入其他技术...

    Spring中的事务控制

    本篇文章将深入探讨Spring中的事务控制,包括事务的基本概念、事务的特性、Spring事务管理的模式以及如何在实际应用中配置和使用事务。 首先,事务是数据库操作的基本单位,确保数据的一致性和完整性。ACID(原子性...

    分布式事务控制程序代码.rar

    这个名为“分布式事务控制程序代码.rar”的压缩包显然提供了一个工具或者框架,帮助开发者轻松地管理和控制分布式环境中的事务。下面我们将深入探讨分布式事务的核心概念、相关技术以及该压缩包中可能包含的QDTC...

    Hibernate事务和并发控制

    在JDBC中,`Connection`对象提供了事务控制的方法,如`setAutoCommit(false)`用于开启手动事务模式,`commit()`用于提交事务,而`rollback()`则用于回滚事务。在示例代码中,当数据库操作出现异常时,会调用`...

    某会计师事务所质量控制程序文件.doc

    制定合理的时间表,确保质量控制程序能够及时更新和执行,是事务所质量控制工作中的重要组成部分。 总的来说,会计师事务所的质量控制程序是确保其审计工作质量和专业标准的重要工具。通过这些程序,事务所不仅能够...

    JDBC事务控制--讲述如何控制JDBC事务

    在 JDBC 中,事务控制主要依赖于 `java.sql.Connection` 接口的方法。默认情况下,JDBC 连接处于自动提交模式,这意味着每次执行 SQL 语句后都会自动提交事务。为了控制事务,我们需要关闭自动提交模式,然后手动...

    浅谈数据库中事务处理和并发控制技术

    2. 一致性:一致性是非常重要的事务处理特性,它与原子性是密切相关的。一致性表示任何事务处理要将数据库从一种状态转变为另一种状态。 3. 隔离性:隔离性表示在事务处理提交之前,事务处理的执行不能被其他事务...

    事务所质量控制制度程序与方法.ppt

    错误的观点认为只有大型事务所才需要关注质量控制,或者认为质量控制仅是质量控制部门的责任,这些都忽视了质量控制在整个事务所运营中的核心地位。质量控制不仅关乎生存,更影响着事务所的长远发展,它如同汽车的...

    事务所质量控制:制度、程序与方法.ppt

    这份名为“事务所质量控制:制度、程序与方法”的PPT材料,由天健会计师事务所制作,深入探讨了质量控制在事务所中的重要性、目标以及相关的职业准则要求。 首先,质量控制与事务所的效益密切相关。一个良好的质量...

    spring AOP(声明式事务管理)小程序

    在本“spring AOP(声明式事务管理)小程序”中,我们将深入探讨Spring AOP如何实现声明式事务管理,以及相关的通知类型。 1. **什么是声明式事务管理**: 声明式事务管理是相对于编程式事务管理而言的,后者需要在...

    RPGLE 事务处理程序实例代码

    我们将通过`Trans_RPG1.RPGLE`和`Trans_RPG2.RPGLE`两个示例程序来讲解相关概念,并参考`Trans_CL.CLLE`中的CL(Control Language)程序,理解它们在实际应用中的作用。 首先,事务处理是数据库操作的基本单元,...

    Spring中事务的传播属性详解

    这意味着`methodB`的操作不受事务控制。 6. **PROPAGATION_NEVER** `methodB`将以非事务方式执行。如果当前存在事务,那么将抛出异常。这种行为适用于那些不能在事务中执行的操作。 7. **PROPAGATION_NESTED** ...

    Spring控制Hibernate中的事务传播特性与隔离级别操作.docx

    在Spring框架中,为了管理和控制Hibernate事务,Spring提供了两种关键工具:HibernateTemplate和JdbcTemplate。这两个模板类简化了与数据库的交互,同时也处理了事务管理。让我们深入了解一下这两个类以及它们如何...

    spring框架事务控制

    springMVC框架事务控制,保证业务操作的完整性 防止在一些意外(例如说突然断电)的情况下出现乱数据,防止数据库数据出现问题。 如:银行转帐。A账户减少的钱要加到B账户上,若A这边减了钱,B那边却还是一样的数,这...

    spring.net oracle 事务控制

    在本项目中,我们将讨论如何在Spring.NET中结合Oracle数据库实现事务控制,以及利用自定义异常处理来确保数据的一致性和完整性。 首先,让我们了解什么是事务。在数据库操作中,事务是一系列操作的集合,这些操作...

Global site tag (gtag.js) - Google Analytics