如何在運行時設置模式? 我想在多個數據庫中運行一個名稱查詢並彙總他們的答案。JPA動態運行多個數據庫模式
例如運行此查詢在DB1和DB2: 選擇客戶從客戶CUS WHERE CUS.CODE = 1
注:我可以在實體上@Table集的模式,但它不是動態的,我無法在運行時更改它。
請幫忙! 問候
如何在運行時設置模式? 我想在多個數據庫中運行一個名稱查詢並彙總他們的答案。JPA動態運行多個數據庫模式
例如運行此查詢在DB1和DB2: 選擇客戶從客戶CUS WHERE CUS.CODE = 1
注:我可以在實體上@Table集的模式,但它不是動態的,我無法在運行時更改它。
請幫忙! 問候
一種解決方案是設置Ñ數據源的每個指向不同數據庫/模式:
DataSource ds1 = // setup ds 1
DataSource ds2 = // setup ds 2
和N實體管理器工廠(EMF)以1對1映射與每個DS:
EntityManagerFactory emf1 = // setup emf1 mapped to ds1
EntityManagerFactory emf2 = // setup emf2 mapped to ds2
然後,你需要與每個EMF注入每個DAO類的N份:
public class CustomerDAO {
private EntityManagerFactory emf;
public CustomerDAO(EntityManagerFactory emf) {
this.emf = emf;
}
// dao methods here..
}
CustomerDAO emf1CustomerDAO = // setup customer DAO injected with emf1
CustomerDAO emf2CustomerDAO = // setup customer DAO injected with emf2
您的應用程序現在可以在運行數據庫/模式通過選擇DAO使用
你可能要考慮的EclipseLink的數據分區支持其做出決定,
http://wiki.eclipse.org/EclipseLink/Examples/JPA/Partitioning