Spring+Jpa多数据源配置

persistence.xml

先配一个data1

<persistence-unit name="data1" transaction-type="RESOURCE_LOCAL">

    <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <properties>

         <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>

         <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/data1?useUnicode=yes&amp;characterEncoding=UTF-8"/>

         <property name="hibernate.connection.username" value="root"/>

         <property name="hibernate.connection.password" value="123123"/>

     

         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>

         <property name="hibernate.show_sql" value="false"/>

         <property name="hibernate.format_sql" value="false"/>

         <property name="hibernate.hbm2ddl.auto" value="update"/>

         <property name="hibernate.id.new_generator_mappings" value="true"/>

    </properties>

</persistence-unit>

再配另一个data2

<persistence-unit name="data2" transaction-type="RESOURCE_LOCAL">

    <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <properties>

        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>

        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/data2?useUnicode=yes&amp;characterEncoding=UTF-8"/>

        <property name="hibernate.connection.username" value="root"/>

        <property name="hibernate.connection.password" value="123123"/>

        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>

        <property name="hibernate.show_sql" value="false"/>

        <property name="hibernate.format_sql" value="false"/>

        <property name="hibernate.hbm2ddl.auto" value="update"/>

        <property name="hibernate.id.new_generator_mappings" value="true"/>

    </properties>

</persistence-unit>

spring_biz.xml配置

<bean id="entityManagerFactory1" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

    <property name="persistenceUnitName" value="data1" />

</bean>

<bean id="entityManagerFactory2" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

    <property name="persistenceUnitName" value="data2" />

</bean>

  <!-- 事务管理 -->

<bean id="transactionManager1" class="org.springframework.orm.jpa.JpaTransactionManager">

    <property name="entityManagerFactory" ref="entityManagerFactory1"/>

</bean>

<bean id="transactionManager2" class="org.springframework.orm.jpa.JpaTransactionManager">

   <property name="entityManagerFactory"  ref="entityManagerFactory2" />

</bean>

<!-- 将事务管理加到标有 @Transactional 的类或者方法上 -->

<tx:annotation-driven transaction-manager="transactionManager1"/>

<tx:annotation-driven transaction-manager="transactionManager2"/>

  

测试

package com.ysotek.peihu.module.order.dao;

import org.junit.Test;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

/**

 * Created by wei on 2017/2/24 15:09.

 */

public class DBTest {

/** Dao层使用的时候加上unitName**/

// @PersistenceContext(unitName = "entityManager1")

// private EntityManager entityManager1;

//

// @PersistenceContext(unitName = "entityManager2")

// private EntityManager entityManager2;

/**----------------------------**/

   @Test

   public void test() {

      EntityManagerFactory data1 = Persistence.createEntityManagerFactory("data1 );

      EntityManagerFactory data2 = Persistence.createEntityManagerFactory("data2 ");

      System.out.println("数据源1:" + data1);

      System.out.println("数据源2:" + data2);

   }

}

猜你喜欢

转载自my.oschina.net/u/1411360/blog/1359353