您可以使用以下代码以编程方式设置自定义连接:
Map properties = new HashMap();
// Configure the internal EclipseLink connection pool
properties.put(JDBC_DRIVER, "oracle.jdbc.OracleDriver");
properties.put(JDBC_URL, "jdbc:oracle:thin:@localhost:1521:ORCL");
properties.put(JDBC_USER, "user-name");
properties.put(JDBC_PASSWORD, "password");
Persistence.createEntityManagerFactory("unit-name", properties);
经过快速谷歌搜索后,我在这里找到了这个答案:
http://eclipse.1072660.n5.nabble.com/Defining-persistence-xml-programatically-td2536.html
我不相信有一种方法可以强制 Eclipselink 仅使用它进行连接java.sql.Connection
;至少不是开箱即用。您可以创建一个简单的实用程序方法来传递所述连接并构建一个属性映射,如上所述。
public Map convertConnectionToProperties(Connection conn) {
// Do the mapping
return theMap;
}
如果您查看此链接,您会看到
持久性.java
createEntityManagerFactory(String persistenceUnitName)
createEntityManagerFactory(String persistenceUnitName, Map properties)
这就是它可以作为参数的全部。简单的说; 如果不获取您的连接对象并对其进行调整以返回符合createEntityManagerFactory
可以接受的内容,那么您所要求的根本是不可能的。
class MyConnection {
// Your code here
public Map convertToMap() {
// Do the mapping
return theMap;
}
public String getPersistenceUnitName() {
return "Some-Name";
}
}
然后像这样使用它:
MyConnection conn = new MyConnection(JDBC_URL, USR, PWD);
EntityManagerFactory factory = Persistence.createEntityManagerFactory(conn.getPersistenceUnitName(), conn.convertToMap());