我在某個時候以編程的方式完成了這項工作 - 即創建兩個具有不同數據源的實體管理器併爲不同的服務提供它們。Spring中的兩個實體管理器
但是現在我正在使用Spring構建webApp。事情是我想讓兩個實體經理負責分開的數據庫。所以在我的情況下,DAO的一半將使用emNumber1,而下半年將使用emNumber2。哦,完全不同的持久性單元,因爲我只需要從DB1讀取數據,然後對其進行處理,並將這些數據存儲在DB2中完全不同的實體中。
我很清楚,這個問題現在已經存在了一段時間,但形式和形式各不相同,所以我只是在撰寫這個問題,因爲我無法理解那些用Google搜索的論壇提出的解決方案線程或他們不適用於我的情況。在相同的情況下,我無法理解解決方案或如何將其應用於我的案例,所以如果要通過鏈接來自該站點的解決方案來解決冗餘問題,真的很抱歉。
這是我如何找到適合配置一個事務管理器
<tx:annotation-driven transaction-manager="transactionManager" />
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/db"
p:username="dbuser"
p:password="dbuser"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="pu1"/>
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true"/>
<property name="generateDdl" value="true"/>
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/>
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="dataSource" ref="dataSource"/>
</bean>
然後吾道內:
public class SimpleDaoImpl implements SimpleDao {
@PersistenceContext
private EntityManager entityManager;
/* methods that use entity manager for transactions and data detcing */
}
所以兩個事務管理與不同數據源的情況下,如何將一個指定什麼實體經理注入哪個DAO或在Spring中不可能?
你檢查了這個鏈接:http://stackoverflow.com/questions/8703242/spring-hibernate-jpa-multiple-databases?rq=1 – ye9ane
我發現,如果你指定單位名稱@PersistenceContext,然後彈簧注入相應的實體管理器...不知道如果這是正確的使用,但它工作正常。 – Xeperis