请教spring+ibatis连多数据库的问题

hbwjz 2008-07-22 12:52:06
我现在有一个问题想问一下怎么实现:
我现在有两台数据库A,B,两个http服务器(C,D),A只管查询,B则查询,update,insert,delete都能进行。
如果是c-->a,那么如果有update,insert,delete操作的就都要连到数据库B上进行操作,但是select是在数据库A上进行的。
如果是D-->B,那么所有的操作都在数据库B上操作。
但是我又不想改我的dao和service。
请问这种情况下我的spring该怎么配置
或者说怎么实现上述功能
...全文
234 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbwjz 2008-07-22
  • 打赏
  • 举报
回复
高人快来帮帮忙了
hbwjz 2008-07-22
  • 打赏
  • 举报
回复
可能也只能这样了
Landor2004 2008-07-22
  • 打赏
  • 举报
回复
如果这样的话,那dao需要分开的,或者如果你确认在一个service的业务方法里面不会出现a和b同时处理的情况的话
你可以这样来区分,只能修改你的配置文件代码
<bean id="xxxADAO" class="com.xxx.dao.ibatis.SqlMapAXxxDAO">
<property name="sqlMapClient" ref="sqlMapClient"/>
<property name="sqlMapClient1" ref="sqlMapClient1"/>
</bean>

只能这样啦
hbwjz 2008-07-22
  • 打赏
  • 举报
回复
好像是不行,因为我的一个dao里既有select又有insert之类的的方法。
在service里我肯呢个即调用了select方法,又调用了insert方法,这样我根本没办法区分要用哪个连接(dataSource)
hbwjz 2008-07-22
  • 打赏
  • 举报
回复
试试看吧
Landor2004 2008-07-22
  • 打赏
  • 举报
回复
看看是否满足你的需求,这是spring1.x的配置方式,用2的话更简单点
Landor2004 2008-07-22
  • 打赏
  • 举报
回复
不只这样是否可以
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- jndi datasource 链接A-->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/a</value>
</property>
</bean>
<!-- jndi datasource 链接B-->
<bean id="dataSource1" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/b</value>
</property>
</bean>
<!-- declare transaction management -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="transactionManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource1" />
</bean>
<!-- a的 Factory-->
<bean id="baseTransactionProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="select*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<!-- b的 Factory-->
<bean id="baseTransactionProxy1" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager1" />
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="cancel*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<!-- SqlMap setup for iBATIS Database Layer -->
<!-- a的 sqlMapClient-->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="WEB-INF/classes/sql-map-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<!-- b的 sqlMapClient-->
<bean id="sqlMapClient1" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="WEB-INF/classes/sql-map-config.xml" />
<property name="dataSource" ref="dataSource1" />
</bean>
<!-- 操作a的 dao-->
<bean id="xxxADAO" class="com.xxx.dao.ibatis.SqlMapAXxxDAO">
<property name="sqlMapClient" ref="sqlMapClient"/>
</bean>
<!-- 操作b的 dao-->
<bean id="xxxBDAO" class="com.xxx.dao.ibatis.SqlMapBXxxDAO">
<property name="sqlMapClient" ref="sqlMapClient1"/>
</bean>
<!-- declare trans transactionPhoneServiceFacade -->
<bean id="transactionXxxService" parent="baseTransactionProxy">
<property name="target">
<bean class="com.xxx.service.XxxServiceImpl">
<property name="xxxADAO" ref="xxxADAO"/>
<property name="xxxBDAO" ref="xxxBDAO"/>
</bean>
</property>
</bean>
</beans>
hbwjz 2008-07-22
  • 打赏
  • 举报
回复
没有人知道吗?
hbwjz 2008-07-22
  • 打赏
  • 举报
回复
这个不用考虑,这个是客户自己来实现,基本上也是把数据同步一下,这个方式很多,不管它,就是那个情况怎么实现
Landor2004 2008-07-22
  • 打赏
  • 举报
回复
两个数据库如何同步呢?
logo 设计不会,就这样先凑合了写道 Fuseblog预备开发带在线SHOP功能的个人博客系统.仿照Appfuse 提供一个完全自动化的ant构建脚本.在线SHOP的数据库建模图例已经 在博客中贴出.感兴趣的和我一起搭建,嘻嘻 文档博客地址: http://forum.sinomagazine.com 开发环境: Jcreator-4.5 JDK-1.5 Ant-1.6.1 MYSQL-5 Tomcat-5.5 Spring-2.5.6 Ibatis-2.3.4 问题事项: 1.在windows系统中,命令行中执行ant命令时,当指定的 构建脚本文件中包含中文字符,而构建脚本文件的编码是UTF-8时将会 Invalid byte 1 of 1-byte UTF-8 sequence. 的错误.这个问题尚未 知解决,故先采用GBK的编码. 2.在Jcreator中创建的项目,不支持UTF-8编码,缺省GBK. 以下先列出初步的的ant构建文件的代码: build.xml 问题,并保证构建成功。 二、工具篇: 持续集成 ... by lixw 2008-09-09 回复 (3) 网络相册开发(6)——ant 自动 ... 在工程目录下创建libs/hibernate/ ,放入 hibernate-tools-3.2.0.ga.jar jtidy-4aug2000r7-dev.jar build.properties project.name=sw project.version=1.0 basedir=. build.dir =${basedir}/build web.dir = ${basedir}/WebR ... by vyyv 2009-03-12 回复 (1) ant配置文件实例详解 build.xml 代码 xml version="1.0" encoding="UTF-8"?> 问题。 Antenna介绍 Ant ... by pandonix 2007-08-28 回复 (9) 用Ant 来编译打包您的Anroid应用 ... 通过 activityCreator.py --out myproject your.package.name.ActivityName 命令可以生成一个project ,生成project下面有个bulid.xml 文件,那个东西就可以帮你打包生成了。 来看下ant是怎么做的。 问题,包括诸如功能:网页装载行动,无缝的跟faces的导航整合,动态视图的ID分配和管理参数分析,无需配置,兼容其他JSF框架。P ... by zly06 2009-09-09 回复 (0) 相关博客 ant模板 < ? xml version = "1.0" ?> < project name= "tax-calculator" default= "package" > < property name= "src.dir" location= "src" / > ... by article2008 2008-07-30 回复 (0) 代码备份build.xml

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧