2012-06-26 47 views
0

我們需要在運行時根據系統屬性選擇JPA提供程序(Hibernate或EclipseLink)。JPA:可以在運行時指定JPA提供程序嗎?

根據我所瞭解的,提供者名稱必須在persistence.xml中給出,並且不能在代碼中重寫。如果未提供提供者名稱,則默認使用類路徑中的第一個提供者。另一種方法是使用2個不同的persistence.xml,並根據系統屬性的值加載其中一個。但是,這似乎也不可能(JPA using alternative "persistence.xml")。

有沒有其他方法可以做到這一點?

回答

1

原來,有一種簡單的方法可以通過在persistence.xml中定義多個持久性單元,每個持續單元具有不同的提供程序名稱。

然後在運行時,在創建EntityManagerFactory時傳遞正確的持久單元名稱。

0

另一種方法是直接訪問持久性提供程序,而不是通過持久性。

+0

謝謝詹姆斯。你能詳細解釋一下嗎? – Rahul

相關問題