Spring+jpa连接多个数据库

本文介绍如何在Java应用中配置多个数据源,并通过Spring框架整合OpenJPA实现多数据库的支持。具体包括:1) persistence.xml配置文件定义了两个数据库单元DBNAME1和DBNAME2;2) ApplicationContext.xml配置文件设置了对应的数据源和实体管理工厂;3) BeansFactory.java通过读取配置文件初始化Bean。此配置适用于需要连接和操作多个数据库的应用场景。
1.persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

<persistence-unit name="DBNAME1"
transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>cn.wiztek.hprms.domain.Building</class>
<class>cn.db.domain.tablename1</class>
<properties>
<property name="openjpa.Log" value="log4j"/>
</properties>
</persistence-unit>
<persistence-unit name="DBNAME2"
transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>cn.db2.domain.tablename1</class>
<properties>
<property name="openjpa.Log" value="log4j"/>
</properties>
</persistence-unit>
</persistence>


2.ApplicationContext.xml(写了两个。。还有个ApplicationContext1.xml内容差不多)
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="com.ibm.db2.jcc.DB2Driver" />
<property name="url"
value="jdbc:db2://127.0.0.1:50000/testdb" />
<property name="username" value="username" />
<property name="password" value="pwd" />
</bean>

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="DBNAME1" />
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
</bean>
</property>
</bean>

两个文件里面唯一不同的就是dataSource分别连接两个数据库,persistenceUnitName分别为DBNAME1和DBNAME2。
3.BeansFactory.java (还是两个,ClassPathResource分别写的ApplicationContext.xml和ApplicationContext1.xml)
public class BeansFactory {
private static Resource res = null;//new ClassPathResource("/cn/wiztek/remis/config/service.xml");//new ClassPathResource("/cn/wiztek/remis/config/service.xml");
private static BeanFactory factory = null;//new XmlBeanFactory(res);//new XmlBeanFactory(res);
static {
try {
System.out.println("!!!");
res = new ClassPathResource("ApplicationContext.xml");
factory = new XmlBeanFactory(res);
} catch (Throwable ex) {
System.err.println(ex);
ex.printStackTrace();
throw new ExceptionInInitializerError(ex);
}
}

public static Object getBean(String beanName){
return factory.getBean(beanName);
}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值