读书人

多库数据源深入分析(Mybatis+ Spring

发布时间: 2012-09-17 12:06:51 作者: rapoo

多库数据源深入分析(Mybatis+ Spring + JTA)(一)

?

最近搭建架构,碰到JTA和事务Transaction的问题,在此做个总结:

?

架构:Mybatis+ Spring

?

技术:spring的AbstractRoutingDataSource和JTA

?

老规矩,先贴代码,在讲原理,刚开始的时候不使用JTA,代码如下:

?

?

?

因为每个Service目前只可能访问一个DataSource,所以在调用Service的时候,调用DataSourceContextHolder.setDataSourceType(key)(key可以为ds1,ds2),

就可以动态切换数据源了(当然最好用AOP思想,技术上spring + AspectJ,在每个Service需要的方法切上一刀),

而且对于spring的@Transactional事务管理是起作用的

?

?

OK,按照这种模式,如果Service可能访问多个库,就将DataSourceTransactionManager换成JtaTransactionManager

?

?

?

当然,Datasource换成JNDI获取

?

?

?

在spring的@Transactional事务管理中,那是死活无法切换数据源

?

由于内容有点多,这个技术总结分为两部分。

?

?

?

读书人网 >编程

热点推荐