2010-05-11 67 views
0

我想管理實體管理器上下文之外的數據庫連接,以便我可以將其用於不同的實體管理器。問題是我如何使用自己的連接來構建實體管理器工廠或實體管理器,而不是在persistence.xml中爲其提供屬性?JPA使用特定的JDBC連接實例構建實體管理器

+0

這是否在SE應用程序或EE環境中? – Justin 2010-05-11 08:55:16

+0

這是一個SE應用程序。 – Wickoo 2010-05-11 09:32:20

回答

1

在任何一種情況下,答案都是你不能在SE中創建EntityManagerFactory時指定數據庫連接屬性,但數據庫連接仍由EntityManager維護,並且出於很好的理由,如果控制了這一點,則可以提交併在EntityManager後面回滾。如果你給同一個數據庫連接多個EntityManager的,這確實是混亂,我不知道你爲什麼要這樣做。

我可以建議的最好的是,你看看EntityManager.getDelegate()(JPA 1.0)或EntityManager.unwrap(java.lang.Class CLS)(JPA 2.0)方法,他們可能會返回底層提供者(即。休眠)對象,你可能能夠撬出數據庫連接,但你肯定無法替換它。

總之真的很糟糕的主意。