前一篇文章提到希望把事务从业务逻辑里面抽取出来,而且事务控制也是符合面向方面的规则的,通过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不是很了解,虽然大意能明白,但是还是对于事务的细节不是特别了解,有空也得多学习。
分享到:
相关推荐
springMVC框架事务控制,保证业务操作的完整性 防止在一些意外(例如说突然断电)的情况下出现乱数据,防止数据库数据出现问题。 如:银行转帐。A账户减少的钱要加到B账户上,若A这边减了钱,B那边却还是一样的数,这...
行政事务管理改进控制程序图.docx
事务所质量控制制度程序与方法.ppt
某会计师事务所质量控制程序文件.doc
房地产公司行政事务管理改进控制程序图
C#中的事务处理例子程序,适合初学者,可以直接用,在数据库的同步控制上很有用
事务所质量控制:制度、程序与方法.ppt
如何使用AS400 中RPGLE 的事务控制操作与隔离级别
基于微信小程序的家庭事务管理系统结合了微信小程序前端和SSM(Spring + Spring MVC + MyBatis)框架后端,旨在帮助家庭成员高效地管理家庭事务和日常任务。以下是该系统的主要实现和功能描述: 微信小程序端: ...
可以统一调用 webservices,rmi,hessian服务。对于小型服务化应用,可以直接根据自己的需要使用。 只需要添加自己的服务,调用远程服务和本地服务一样方便。
2 适用范围 本程序适用于信息安全管理体系中与信息系统有关的文件与资料,包括:信息安全管理 管理体系文件(含记录)、相关技术文件和资料,以及相关外来文件(各类标准、软件 、产品样本等)。 3 职责分工 3.1 ...
数据操作 数据定义 数据控制 事务控制 程序化SQL 局部变量 ....
用spring AOP(包括几种常用的通知类型)做的小程序
数据操作 数据定义 数据控制 事务控制 程序化SQL 局部变量 全局变量 统计函数 算术函数 字符串函数 日期函数 系统函数 sql中的保留字
事务处理广泛地应用于数据库和操作系统领域,并在现代计算机系统中监控、控制和更新信息。本书向读者展示了大型的、分布的、异构的计算机系统是如何进行可靠工作的。作者使用事务作为基本概念,说明了在有限的资金和...
"XXXX有限公司 " "控制状态: " " " " " " " " " " " " " "文件控制程序 " " " " " " " " " " " " " "文件编号: SJ/QP-001 " "文件版本: B " "生效日期: 2004.11.01 " "发文编号: " " " " " " " " " " " " " ...
程序一词来自生活,通常指完成某些事务的一 种既定方式和过程 在日常生活中,可以将程序看成对一系列动作 的执行过程的描述 计算机中的程序 算法 计算圆形的面积 流程图 流程图: 是人们对解决问题的方法、...
Mybatis连接池、事务控制和复杂查询相关的案例源码。包含详细注释。
cc实例232 在VisualcC++中执行事务 cc实例233 在程序中执行SQL脚本 cc实例234 利用 SQL语句执行外围命令 第9章 SQL查询相关技术 9.1 通用查询 cc实例235 SQL语句的应用方法 cc实例236 SQL语句的模糊...
随着越来越多的与大数据相关的应用程序系统的开发,NoSQL(不仅SQL)数据库系统变得越来越流行。 为了为某些NoSQL数据库系统添加事务功能,许多学者尝试了不同的技术。 不幸的是,在现有文献中缺乏对Redis交易的研究...