前一篇文章提到希望把事务从业务逻辑里面抽取出来,而且事务控制也是符合面向方面的规则的,通过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中的保留字
对于大多数 OLE DB 提供程序(包括 SQL Server),必须将隐式或显示事务中的数据修改语句中的 XACT_ABORT 设置为 ON。 知识点:XACT_ABORT 设置可以控制事务中的错误处理机制。 5. MSDTC 设置 MSDTC 设置包括网络...
在Oracle数据库中,还可以使用事务隔离级别来控制事务的隔离性。事务隔离级别可以是Read Uncommitted、Read Committed、Repeatable Read和Serializable。不同的隔离级别可以提供不同的隔离性和并发性。 在事务处理...
事务处理广泛地应用于数据库和操作系统领域,并在现代计算机系统中监控、控制和更新信息。本书向读者展示了大型的、分布的、异构的计算机系统是如何进行可靠工作的。作者使用事务作为基本概念,说明了在有限的资金和...
"XXXX有限公司 " "控制状态: " " " " " " " " " " " " " "文件控制程序 " " " " " " " " " " " " " "文件编号: SJ/QP-001 " "文件版本: B " "生效日期: 2004.11.01 " "发文编号: " " " " " " " " " " " " " ...
外包过程控制程序.pdf 本文档详细介绍了外包过程控制程序的各个方面,包括目的、适用范围、职责、内容和方法等。 目的:确保外协加工厂商供应的产品质量符合本公司的需要,保证外协加工产品的加工进度、按时交货。 ...