gpt4 book ai didi

java - EclipseLink JPA 2.1 用户提供的连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:01 24 4
gpt4 key购买 nike

我想使用 EclipseLink 作为我的 JPA 引擎。我们正在使用 java.sql.Connection 的子类,我想知道是否可以强制 EclipseLink 使用我的连接。我想以编程方式设置连接对象。

有点像

MyConnection conn = new MyConnection(JDBC_URL, USR, PWD);
EntityManagerFactory factory = Persistence.createEntityManagerFactory(conn);

最佳答案

您可以使用以下代码以编程方式设置自定义连接:

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;
}

如果你看一下this link你会看到的

持久化.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());

关于java - EclipseLink JPA 2.1 用户提供的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24452376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com