日期:2014-05-16  浏览次数:20408 次

请教spring+ibatis连多数据库的问题
我现在有一个问题想问一下怎么实现:
我现在有两台数据库A,B,两个http服务器(C,D),A只管查询,B则查询,update,insert,delete都能进行。
如果是c-->a,那么如果有update,insert,delete操作的就都要连到数据库B上进行操作,但是select是在数据库A上进行的。
如果是D-->B,那么所有的操作都在数据库B上操作。
但是我又不想改我的dao和service(dao里既有select又有insert之类的方法,service里可能即调用了select又调用了insert之类的方法)
请问这种情况下我的spring该怎么配置,或者说怎么实现上述功能
1 楼 hbwjz_wolf 2008-07-22  
没人遇到过这样的情况吗
2 楼 javazhujf 2008-07-22  
分布式数据库解决?
3 楼 kwyjibo 2008-07-22  
iBATIS- Accessing Multiple Instances of Databases from Your Application
http://twit88.com/blog/2007/12/26/ibatis-accessing-multiple-instances-of-databases-from-your-application/
How do I get dynamic DataSources with iBATIS and Spring?
http://opensource.atlassian.com/confluence/oss/pages/viewpage.action?pageId=12583003
前不久查过相关资料,但没有测过。
当时是打算做分库的sharding。
上面的资料希望对你有帮助。
根据不同的xml文件配置不同的sqlmapClient。
sqlmapClient也有一个接口可以替换db 的datasource;但 上面的文章有说,Since
SqlMapClient doesn't segment its cache based on DataSources, a single SqlMapClient will merge all the results from multiple DataSources into one cache. 但这个问题也没自己验证。
4 楼 chaotienhisang 2008-07-27  
连一个数据库起 2个别名不久行了

<alias name="datasource" alias="pataA_datasource"/>
<alias name="datasource" alias="pataB_datasource"/>
5 楼 chaotienhisang 2008-07-27  
用我上面的方法定义一个通用的数据源 然后分别用定义的别名连接不同的数据库