在构建应用程序时会创建persistence.xml中的持久性单元。由于我想在运行时更改数据库URL,是否有任何方法可以在运行时修改持久性单元?我应该使用其他数据库,而不是在分发后预先绑定一个数据库。
我正在使用EclipseLink(JPA 2.1)
保持持久性单元文件(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();