2012-10-30 55 views
3

出於某種原因,我需要在程序執行期間(使用JPA)動態更改persistence.xml的內容,我需要更改主機的地址。這可能嗎?
非常感謝執行期間動態更改persistence.xml中的內容

+0

不知道這是否會幫助http://stackoverflow.com/questions/6355905/change-values-在持久性的XML由內最程序 – gtgaxiola

回答

6

您可以使用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(); 
} 

您也可以使用。參照Dynamically generated Persistence-UnitDataNucleusPersistenceUnitMetaData