java web项目中hibernate +spring +tomcat如何实现多数据库?

 我来答
飘渺幻客
2011-04-01 · TA获得超过460个赞
知道答主
回答量:166
采纳率:0%
帮助的人:0
展开全部
一下方法只能是同一种数据库, 因为数据库不同的话,数据库方言也就不同,这个暂时解决不了

applicationContext.xml:
<bean id="parentDataSource" class="org.apache.commons.dbcp.BasicDataSource" 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="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<value>
<!-- 设置数据库方言 -->
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
<!-- 输出SQL语句到控制台 -->
hibernate.show_sql=true
<!-- 格式化输出到控制台的SQL语句 -->
hibernate.format_sql=true

</value>
</property>
<property name="packagesToScan" value="com.zxw.link.business.**.entity"></property>
</bean>

<bean id="dataSource" class="com.zxw.link.commons.data.DynamicDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<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="oracle.jdbc.driver.OracleDriver" />
<!-- 设置JDBC连接URL -->
<property name="url" value="jdbc:oracle:thin:@148.20.20.17: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="oracle.jdbc.driver.OracleDriver" />
<!-- 设置JDBC连接URL -->
<property name="url" value="jdbc:oracle:thin:@148.20.20.15: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 CustomerContextHolder.getCustomerType();
}

}

CustomerContextHolder .java:

public class CustomerContextHolder {
private static final ThreadLocal contextHolder =
new ThreadLocal();

public static void setCustomerType(String customerType) {
contextHolder.set(customerType);
}

public static String getCustomerType() {
return (String) contextHolder.get();
}

public static void clearCustomerType() {
contextHolder.remove();
}
}

action中调用
public class ZzhAction {

@Resource
private ZzhService zzhService;

@RequestMapping("/zzh/test.do")
public void test(){

List<Zzh> zzhs=zzhService.getAll();
System.out.println(zzhs.size());
//设置数据源, 参数为配置文件中的
//<entry key="new_back" value-ref="new_back_DataSource"/> 的key
CustomerContextHolder.setCustomerType("new_back");
}

}
百度网友e829334c0
2011-04-01 · TA获得超过473个赞
知道小有建树答主
回答量:1066
采纳率:0%
帮助的人:825万
展开全部
想要连接几个数据库,就在配置文件里配置几个数据源,然后分别调用需要使用的数据源
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
市懿93
2011-04-01 · TA获得超过196个赞
知道答主
回答量:85
采纳率:0%
帮助的人:84.3万
展开全部
随便你怎么弄啊
针对多个数据库可以配置多个tomcat的数据源
hibernate中DAO就取多个数据源
也可以写几个连接数据的配置文件就行了,然后在调用配置文件下加上你多写的配置文件名字就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狂龙5201
2011-04-01
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
你只要多写几个连接数据的配置文件就行了,然后在调用配置文件下加上你多写的配置文件名字就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式