spring.net + nhibernate 多数据库的支持,以及跨数据库的事物处理的讨论

现在项目基本都是多数据库的数据存储方式,但sh架构的对多数据库架构的支持好像没发现什么好的解决方案。尤其采用了spring.net的事物aop后,感觉对多数据库的事物处理更费劲。可能是本人水平太低吧。

 

目前项目中,对多数据数据库的支持,就是每一个数据库配置相应的sessionFactory、transactionMananger与transactionInterceptor。在dao层实现3个对象的注入。可是此方式并不能实现跨数据的事物处理。这可是大问题。为此,索性不用spring.net提供的事物处理模块,或对于跨数据库采用自己的事物处理方式。其实spring.net的事物处理是采用aop方式,那何不项目中自己写一个事物aop实现多数据库的事物支持以及跨数据库的事物处理呢?

 

实现的代码就不贴了,原理如下:

 

1.  创建一个TransactionOptionAttribute事物选择类继承自Attribute

     TransactionOptionAttribute类中关联System.Transaction的TransactionScopeOption枚举

 

2.  创建一个TransactionAdvice事物建议继承IMethodInterceptor

 

     根据TransactionOptionAttribute的事物枚举值创建System.Transaction的TransactionScope的对象实现跨数据库的事物处理

 

3. 给客户端的方法添加TransactionOption的事物声明。

 

4. 别忘了,在系统中启动分布式事务处理的服务。

 

这个是个比较土鳖的方式来实现对支持多数据库以及事物的支持。但感觉还实用,呵呵~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值