spring的事务管理关键概念

spring已经提供了声明式的事务管理模型,这主要借用了基于ioc容器实现的aop编程框架,利用类似拦截器的方式将定义需要进行事务处理的bean方法进行代理封装.

当然其核心部分还在于其自身实现的事务管理,因此这里就从编程式的事务管理开始讲起.

首先,对于事务的定义可以通过TransactionDefinition接口的实现来进行描述,当然spring已经提供了最常用的DefaultTransactionDefinition实现.这个设计的思想又不禁让人想起了ioc容器中用到的BeanDefinition以及其默认实现DefaultBeanDefinition.这样设计的主要目的在于将定义的描述对象与其每个实例进行隔离.

而对于被创建的事务对象将通过TransactionStatus来进行封装,当然该接口也有继承于AbstractTransactionStatus的默认实现DefaultTransactionStatus.因此在1个事务方法中,事务管理器将根据TransactionStatus的实例对象进行commit,rollback等操作.但这里值得1提的是,如果以
DefaultTransactionStatus为例,该类中封装了private final Object transaction对象.这里的transaction在运行期将是个SmartTransactionObject的实现对象,如JdbcTransactionObjectSupport或者DataSourceTransactionObject或者JtaTransactionObject,当然这里的DataSourceTransactionObject是个内部类,它继承了DataSourceTransactionObjectSupport.

再以DataSourceTransactionObject为例,在该类的父类DataSourceTransactionObjectSupport中,封装了private ConnectionHolder connectionHolder,而该connectionHolder对象又绑定了private Connection currentConnection.这里其实是事务实现的核心所在了,在接下来的讲述中会发现,jdbc事务的最终操作其实就委托给currentConnection来做进行相应的处理.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值