动态更改持久性单元 - JPA

N K*_*N K 14 java jpa persistence.xml

persistence.xml中的持久性单元是在构建应用程序期间创建的.由于我想在运行时更改数据库URL,有没有办法在运行时修改持久性单元?我应该在分发之后使用除预绑定之外的不同数据库.

我正在使用EclipseLink(JPA 2.1)

N K*_*N K 32

保持持久性单元文件(Persistence.xml)不变.您可以按如下方式覆盖其中的属性.

EntityManagerFactory managerFactory = null;
Map<String, String> persistenceMap = new HashMap<String, String>();

persistenceMap.put("javax.persistence.jdbc.url", "<url>");
persistenceMap.put("javax.persistence.jdbc.user", "<username>");
persistenceMap.put("javax.persistence.jdbc.password", "<password>");
persistenceMap.put("javax.persistence.jdbc.driver", "<driver>");

managerFactory = Persistence.createEntityManagerFactory("<current persistence unit>", persistenceMap);
manager = managerFactory.createEntityManager();
Run Code Online (Sandbox Code Playgroud)