Spring3+Hibernate3(Jpa) 配置多个数据源的解决方案(基于注解)
----------------配置文件--------------------------------
-------------------------------------META-INF/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="mysql" transaction-type="RESOURCE_LOCAL">
- <provider>org.hibernate.ejb.HibernatePersistence</provider>
- <non-jta-data-source>mysqlDataSource</non-jta-data-source>
-
- <class>com.sunhope.model.core.ExternalEnvironment</class>
-
- <properties>
- <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
- <property name="hibernate.archive.autodetection" value="false"/>
- <property name="hibernate.transaction.auto_close_session" value="false"/>
- <property name="hibernate.hbm2ddl.auto" value="update" />
- </properties>
- </persistence-unit>
-
- <persistence-unit name="postgre" transaction-type="RESOURCE_LOCAL">
- <provider>org.hibernate.ejb.HibernatePersistence</provider>
-
- <non-jta-data-source>postgreDataSource</non-jta-data-source>
-
- <class>com.sunhope.model.baseinfo.BdStorageCompany</class>
- <class>com.sunhope.model.baseinfo.BdHouseType</class>
- <class>com.sunhope.model.baseinfo.BdStorage</class>
- <class>com.sunhope.model.core.StoreEnvironment</class>
-
- <properties>
- <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
- <property name="hibernate.archive.autodetection" value="false"/>
- <property name="hibernate.transaction.auto_close_session" value="false"/>
- <property name="hibernate.hbm2ddl.auto" value="update" />
- </properties>
- </persistence-unit>
-
-
</persistence>
-------------------------------------applicationContext.xml---------------------------------------------------------
---------------------注解
-------------------------------------DAO-------------------------------------------------------------
------------MySqlBaseDaoImpl.java
-
@Transactional(value="mysqlEM")
-
public class MySqlBaseDaoImpl<T> implements IMySqlBaseDao<T>{
- @PersistenceContext(unitName="mysql")
- protected EntityManager em;
-
-
- }
------------PostgreSqlBaseDaoImpl.java
-
@Transactional(value="postgreEM")
-
public class PostgreSqlBaseDaoImpl<T> implements IPostgreSqlBaseDao<T>{
- @PersistenceContext(unitName="postgre")
- protected EntityManager em;
-
-
- }
-------------------------------------Service-------------------------------------------------------------
---------------ExternalEnvironmentServiceImpl.java
- @Service
-
@Transactional(value="mysqlEM")
-
public class ExternalEnvironmentServiceImpl extends
- MySqlBaseDaoImpl<ExternalEnvironment> implements IExternalEnvironmentService {
-
- }
--------------------BdStorageCompanyServiceImpl.java
- @Service
-
@Transactional(value="postgreEM")
-
public class BdStorageCompanyServiceImpl extends PostgreSqlBaseDaoImpl<BdStorageCompany>
- implements IBdStorageCompanyService {
-
- }
-------------------------------------Model(Entity)-------------------------------------------------------------
-------------ExternalEnvironment.java---------------------------------------------------
-
@Entity(name = "TBL_EXTERNALENVIRONMENT")
-
public class ExternalEnvironment extends BaseModel{
-
-
-
- }
-----------------BdStorageCompany.java-------------------------------------------------
-
@Entity(name = "TBL_BDSTORAGECOMPANY")
-
public class BdStorageCompany extends BaseModel {
-
-
-
- }
原文地址http://www.bieryun.com/2109.html