Puede actualizar las propiedades en una unidad de persistencia proporcionando un Mapa (consulte this).
Convenientemente, las variables de entorno se pueden recuperar como un mapa (consulte this).
Ponga las dos juntas y puede actualizar dinámicamente las propiedades en su unidad de persistencia con variables de entorno.
EDIT: ejemplo sencillo ...
persistence.xml ...
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<provider>
oracle.toplink.essentials.PersistenceProvider
</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="toplink.logging.level" value="INFO"/>
<property name="toplink.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="toplink.jdbc.url" value="jdbc:oracle:thin:@myhost:l521:MYSID"/>
<property name="toplink.jdbc.password" value="tiger"/>
<property name="toplink.jdbc.user" value="scott"/>
</properties>
</persistence-unit>
código que las actualizaciones persistence.xml unidad de "default" con las variables de entorno ...
Map<String, String> env = System.getenv();
Map<String, Object> configOverrides = new HashMap<String, Object>();
for (String envName : env.keySet()) {
if (envName.contains("DB_USER")) {
configOverrides.put("toplink.jdbc.user", env.get(envName)));
}
// You can put more code in here to populate configOverrides...
}
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("default", configOverrides);
Los detalles de la base de datos como nombre de host no se deben definir en su persistence.xml. Use búsquedas JNDI y defina parámetros concretos de la base de datos en su servidor de aplicaciones ... – home
Hola, lamento mencionar que no estoy usando ningún servidor de aplicaciones aquí, estoy ejecutando una aplicación independiente, es por eso que necesito codificar los detalles de la base de datos en el archivo persistence.xml . – Ran
¿Desea obtener los detalles de la base de datos de las variables de entorno o de persistence.xml? Parece que dices que quieres obtenerlos de ambos, pero no está del todo claro ... –