JAVA连接多个数据库有什么开源实现吗

JAVA连接多个数据库有什么开源实现吗,第1张

有啊,不管是hibernate还是mybatis都支持动态切换数据库配置

这是个hibernate的例子:>

一下方法只能是同一种数据库, 因为数据库不同的话,数据库方言也就不同,这个暂时解决不了

applicationContextxml:

<bean id="parentDataSource" class="orgapachecommonsdbcpBasicDataSource" destroy-method="close">

<!-- 设置连接池初始值 -->

<property name="initialSize" value="5" />

<!-- 设置连接池最大值 -->

<property name="maxActive" value="5" />

<!-- 设置连接池最小空闲值 -->

<property name="minIdle" value="2" />

<!-- 设置连接池最大空闲值 -->

<property name="maxIdle" value="5" />

</bean>

<bean id="sessionFactory" class="orgspringframeworkormhibernate3annotationAnnotationSessionFactoryBean">

<property name="dataSource" ref="dataSource"/>

<property name="hibernateProperties">

<value>

<!-- 设置数据库方言 -->

hibernatedialect=orghibernatedialectOracle10gDialect

<!-- 输出SQL语句到控制台 -->

hibernateshow_sql=true

<!-- 格式化输出到控制台的SQL语句 -->

hibernateformat_sql=true

</value>

</property>

<property name="packagesToScan" value="comzxwlinkbusinessentity"></property>

</bean>

<bean id="dataSource" class="comzxwlinkcommonsdataDynamicDataSource">

<property name="targetDataSources">

<map key-type="javalangString">

<entry key="zxw" value-ref="zxw_DataSource"/>

<entry key="new_back" value-ref="new_back_DataSource"/>

<!--更多的数据源,根据下面的配置文件再写一个datasource 并且在这里配置entry -->

</map>

</property>

<property name="defaultTargetDataSource" ref="zxw_DataSource"/>

</bean>

<bean id="zxw_DataSource" parent="parentDataSource">

<!-- 设置JDBC驱动名称 -->

<property name="driverClassName" value="oraclejdbcdriverOracleDriver" />

<!-- 设置JDBC连接URL -->

<property name="url" value="jdbc:oracle:thin:@148202017:1521:oradb" />

<!-- 设置数据库用户名 -->

<property name="username" value="zhou" />

<!-- 设置数据库密码 -->

<property name="password" value="zhou" />

</bean>

<!-- #################### 新备份 ################ -->

<bean id="new_back_DataSource" parent="parentDataSource">

<!-- 设置JDBC驱动名称 -->

<property name="driverClassName" value="oraclejdbcdriverOracleDriver" />

<!-- 设置JDBC连接URL -->

<property name="url" value="jdbc:oracle:thin:@148202015:1521:ora10" />

<!-- 设置数据库用户名 -->

<property name="username" value="report" />

<!-- 设置数据库密码 -->

<property name="password" value="report" />

</bean>

<!-- #################### 新备份 ################ -->

DynamicDataSource java:

public class DynamicDataSource extends AbstractRoutingDataSource {

protected Object determineCurrentLookupKey() {

// TODO Auto-generated method stub

return CustomerContextHoldergetCustomerType();

}

}

CustomerContextHolder java:

public class CustomerContextHolder {

private static final ThreadLocal contextHolder =

new ThreadLocal();

public static void setCustomerType(String customerType) {

contextHolderset(customerType);

}

public static String getCustomerType() {

return (String) contextHolderget();

}

public static void clearCustomerType() {

contextHolderremove();

}

}

action中调用

public class ZzhAction {

@Resource

private ZzhService zzhService;

@RequestMapping("/zzh/testdo")

public void test(){

List<Zzh> zzhs=zzhServicegetAll();

Systemoutprintln(zzhssize());

//设置数据源, 参数为配置文件中的

//<entry key="new_back" value-ref="new_back_DataSource"/> 的key

CustomerContextHoldersetCustomerType("new_back");

}

}

首先web程序,每天访问量巨大!

页面本身已经有一个数据库查询,我打算在此次数据库查询里把我需要的另一种信息查出来,而不是多一次数据库查询,这样的代价就是循环遍历结果集的时候,循环次数多了(预计最多多了100以内)。

想问下,两种方案哪个从性能方面来说更 *** 蛋?

1,一次数据库查询查出所有,代价是多了几次循环。

2,分开两次数据库查询。

以上就是关于JAVA连接多个数据库有什么开源实现吗全部的内容,包括:JAVA连接多个数据库有什么开源实现吗、java如何实现多种数据库的同步、java web项目中hibernate +spring +tomcat如何实现多数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9741471.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存