Externalize dynamic properties in persistence.xml

Viewed 3022

We are using the bellow properties in our persistence.xml file.

<properties>
    <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" />
    <property name="javax.persistence.jdbc.dialect" value="org.hibernate.dialect.OracleDialect" />
    <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@XYZDB01:78111:TATAD1" />
    <property name="javax.persistence.jdbc.user" value="admin" />
    <property name="javax.persistence.jdbc.password" value="admin@123" />
    <property name="javax.persistence.jdbc.Schema" value="CSMVC" />
</properties>

But I want to externalize the dynamic properties from persistence.xml something like bellow.

<properties>
    <property name="javax.persistence.jdbc.driver" value="${db.driver}" />
    <property name="javax.persistence.jdbc.dialect" value="${db.dialect}" />
    <property name="javax.persistence.jdbc.url" value="${db.url}" />
    <property name="javax.persistence.jdbc.user" value="${db.user}" />
    <property name="javax.persistence.jdbc.password" value="${db.password}" />
    <property name="javax.persistence.jdbc.Schema" value="${db.schema}" />
</properties>

Note: We are using openJpa as the JPA provider.

1 Answers

Normally, you would define your datasource in your container and have JPA look it up via JNDI. Are you running JPA in Spring/TomEE/Tomcat/Wildfly/Liberty or anything else?

Related