3

由于某种原因,我需要在程序执行期间动态更改persistence.xml的内容,(使用JPA),我需要更改主机地址。这可能吗?
非常感谢

4

1 回答 1

8

您可以使用createEntityManagerFactory(unitName, map)方法来更改Persistence Context. 在我的示例中,Persistence Unit Name将是 dynamicJPA。

例子 :

protected EntityManager getEntityManager(String driver, String url, String username, String password) {
    EntityManager em = null;
    Map properties = new HashMap();
    properties.put("javax.persistence.jdbc.driver", driver);
    properties.put("javax.persistence.jdbc.url", url);
    properties.put("javax.persistence.jdbc.user", username);
    properties.put("javax.persistence.jdbc.password", password);
    try {
        emf = Persistence.createEntityManagerFactory("dynamicJPA", properties);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return em = (EntityManager) emf.createEntityManager();
}

您还可以使用PersistenceUnitMetaData.ReferenceDataNucleus动态生成的 Persistence-Unit

于 2012-10-30T14:30:49.693 回答