![](/img/trans.png)
[英]How to connect to Sql Server with integrated security using JDBC (via persistence.xml)
[英]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.