快速业务通道

spring中设置动态数据源 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
> <property name="username" value="admin"/> <property name="password" value="master997mb"/> </bean> <bean id="yxhDataSource" parent="parentDataSource"> <property name="username" value="yxh"/> <property name="password" value="yxh"/> </bean>

在这个配置中可以看到首先有个parentDataSource,这个主要 配置一些数据源的公用信息,项目中都是链接DB2数据库; adminDataSource和yxhDataSource是根据不同需要配置的个性化信 息,但都必须加parent属性,值为 parentDataSource。这样就配 置好了2个数据源信息。当然如果链接的多数据源是不同类型的两 个数据库,那么 parentDataSource就可以不要了,直接配置两个 不同的数据源链接就可以了。

五、编写spring配置文件配置多数据源映射关系

代码

<bean id="dataSource" class="cn.com.xinli.ccp.dynamicds.DynamicDataSource"> <property name="targetDataSources"> <map key-type="java.lang.String"> <entry key="Yxh" value-ref="yxhDataSource"/> </map> </property> <property name="defaultTargetDataSource" ref="adminDataSource"/> </bean>

在这个配置中第一个property属性配置目标数据源,<map key-type="java.lang.String">中的key-type必须要和静态键 值对照类DataSourceMap中的值的类型相同;<entry key="Yxh" value-ref="yxhDataSource"/>中key的值必须要和静态键值对 照类中的值相同,如果有多个值,可以配置多个< entry>标 签。第二个property属性配置默认的数据源。

六、配置hibernate。

Hibernate的配置和普通的hibernate、spring结合的配置一样

代码

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFact oryBean"> <!-- to override, use the "SpringDatasourceConfig" snippet in your project --> <property name="dataSource"> <ref local="dataSource" /> </property> <property name="mappingResources"> <list> <value> cn/com/xinli/ccp/entity/User.hbm.xml </value> <value> cn/com/xinli/ccp/entity/Test.hbm.xml </value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.DB2Dialect </prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.use_outer_join">true</prop> <prop key="hibernate.jdbc.batch_size">50</prop> <prop key="hibernate.jdbc.fetch_size">5</prop> <prop key="hibernate.connection.pool_size">2</prop> <prop key="hibernate.connection.autocommit">false</prop> ; <prop key="hibernate.cache.use_query_cache">false</prop> ; <prop key="hibernate.max_fetch_depth">1</prop> <prop key="hibernate.bytecode.use_reflection_optimizer">true& lt;/prop> </props> </property> </bean> <bean id="mydao" class="cn.com.xinli.ccp.dao.HibernateBaseDao"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean>

关于dao的代码这里就省略了。

七、配置结束,可以使用了。

代码

public class DaoTest extends TestCase { public void testSave() throws Exception{ CustomerContextHolder.setCustomerType (DataSourceMap.Admin);//设置数据源 //hibernate创建实体 Test test = new Test(); test.setTest("22222222"); mydao.save(test);//使用dao保存实体 CustomerContextHolder.setCustomerType (DataSourceMap.Yxh);//设置为另一个数据源 mydao.save(test);//使用dao保存实体到另一个库中 } }

在项目中对于编码人员对多数据源的切换可以做成透明的,操 作同样的dao,就可以访问不同的数据库了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号