2010-11-27 91 views
2

我們有一個帳戶的中央數據庫。它包含登錄信息和一個稱爲數據庫配置文件的字段。數據庫配置文件指示該帳戶應該使用哪個數據庫連接。例如,我們將擁有Profile1,Profile2,Profile3 ... ProfileN對於這種情況,JPA是否是適當的ORM?

如果用戶被指示擁有Profile1,他們將使用與被指示爲Profile2的一部分的用戶不同的數據庫。

我對JPA的理解是,即使數據庫都具有相同的模式,只是不同的連接信息,您仍需要爲每個Profile(持久性單元)創建一個新的EntityManagerFactory。因此,如果我們最終擁有100個配置文件,我們將擁有100個Entity Manager工廠,這似乎並不理想。

我查看了EntityManagerFactory,它似乎沒有讓您更改數據庫連接選項。

是我唯一的選擇有N EntityManagerFactory的,如果是的話,他們會對此產生任何重大後果(如性能不佳)?

感謝您的任何建議。

回答

3

你談論的事情的種類超出了JPA抽象的範圍。諸如特定連接管理之類的事情通常更多提供者特定。例如,使用Hibernate SessionFactory,您當然可以使用create new sessions from an aribtraty JDBC connection。有一些缺陷可以考慮,例如ID生成方案(您可能需要使用DB中生成的序列),並且基本上可以使用L2緩存,但仔細編程可以使其工作。

2

只需使用javax.persistence.Persistence#createEntityMananagerFactory(String,Map),並在Map中提供連接參數。緩存EMF,並明智地使用連接,不要混合來自不同EMF的n匹配對象。

2

如果您使用的是彈簧,那麼我知道有一種方法可以動態切換數據源。查找更多信息here

相關問題