3

理由により、プログラムの実行中に (JPA を使用して) persistence.xml の内容を動的に変更する必要があり、ホストのアドレスを変更する必要があります。これは可能ですか?
どうもありがとうございました

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();
}

.Reference Dynamically generated Persistence-UnitPersistenceUnitMetaDataを使用することもできますDataNucleus

于 2012-10-30T14:30:49.693 に答える