动态更改持久性单元 - JPA

2022-09-02 20:03:08

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

我正在使用EclipseLink(JPA 2.1)


答案 1

保持持久性单元文件(持久性.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();

答案 2

可以使用 Persistence.createEntityManagerFactory(Map) 传递属性以选择数据库 URL 和其他设置。


推荐