簡體   English   中英

在persistence.xml中使用JDBC

[英]using JDBC with persistence.xml

我正在建立一個管理對數據庫的訪問的框架。

框架從用戶那里獲取任務並處理連接池,該連接池管理對數據庫的訪問。 用戶只需向我發送SQL命令。

我要支持的功能之一是與JPA一起使用,在這種情況下,我將提供實體管理器。 在某些情況下,我想提供JDBC訪問以及JPA訪問。 數據庫的參數寫在XML文件中。

因此對於JPA,我需要在persistence.xml中寫入屬性,因此再次為JDBC寫相同的參數將不是那么明智。 你知道我是否可以從persistence.xml中獲取數據庫的參數,你是否知道是否有源代碼可以做到這一點。 還是我應該自己解析persistence.xml?

您是否知道我可以從persistence.xml獲取數據庫的參數,您是否知道有執行此操作的源代碼。 還是我應該自己解析persistence.xml

我不知道標准JPA API中允許檢索驅動程序類名稱,jdbc url,用戶名和密碼的任何內容。

第二個問題,這些屬性的鍵在JPA 1.0中沒有標准化。 例如,Hibernate將使用:

<property name="hibernate.connection.driver_class" value=""/>
<property name="hibernate.connection.url" value=""/>
<property name="hibernate.connection.username" value=""/>
<property name="hibernate.connection.password" value=""/>

盡管EclipseLink將使用:

<property name="eclipselink.jdbc.driver" value=""/>
<property name="eclipselink.jdbc.url" value=""/>
<property name="eclipselink.jdbc.user" value=""/>
<property name="eclipselink.jdbc.password" value=""/>

這可能會使解析變得脆弱。

如果可以選擇的話,也許您可​​以使用屬性文件來存儲提供程序特定的鍵和值(我建議使用標准化的JPA 2.0屬性作為鍵)。 例如:

# keys for JPA
javax.persistence.jdbc.driver = hibernate.connection.driver_class 
javax.persistence.jdbc.url = hibernate.connection.url
javax.persistence.jdbc.user = hibernate.connection.username
javax.persistence.jdbc.password = hibernate.connection.password

# values common to JPA and JDBC
driver = org.h2.Driver
url = jdbc:h2:mem:test
username = scott
password = tiger

並使用Persistence.createEntityManagerFactory(String, Map)並傳遞一個Map ,將其與文件中的屬性一起提供以創建EntityManagerFactory

Map map = new HashMap(); 
map.put(...);
...
EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyPu", map);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM