次のコードを使用して、カスタム接続をプログラムで設定できます。
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);
Googleで簡単に検索した後、この回答を見つけました:
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;
}
このリンクを見れば分かると思いますが、
Persistence.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());