Edit: not duplicate but almost
I would like to have my app persistence.xml to be something like
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="appName" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="${db.dialect'}"/>
<property name="javax.persistence.jdbc.driver" value="${db.driver}"/>
<property name="javax.persistence.jdbc.user" value="${db.user}"/>
<property name="javax.persistence.jdbc.password" value="${db.password}"/>
<property name="javax.persistence.jdbc.url" value="${db.url}"/>
</properties>
</persistence-unit>
</persistence>
getting these placeholder values from a simple text file somewhere in my source folders.
I read about that it's possible when using Spring doing like
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:com/foo/jdbc.properties</value>
</property>
</bean>
but here we are not using Spring, just Hibernate and some Primefaces.
Is it possible?
Thanks!
Edit: I didn't mention some things, but for reference, I'm also using Shiro Security and Ant to do some stuff. I'll post the solution as an answer. This makes my project have 3 different files with database parameters:
xml , choose the Source tab. Specify the data source for the persistence unit. Typically, you use the relevant data source alias name to specify the DataSource. Make sure that the value of the jta-data-source tag is the same as the value of the alias tag in the data-source-aliases.
xml File. This file is used to override the default Hibernate settings and to add support for database types that are not out of the box (OOB database types are Oracle Server, Microsoft SQL Server, and MySQL).
The persistence. xml file gives you complete flexibility to configure the EntityManager. The persistence. xml file is a standard configuration file in JPA.
xml file. This file defines a persistence unit named OrderManagement, which uses a JTA-aware data source jdbc/MyOrderDB. The jar-file and class elements specify managed persistence classes: entity classes, embeddable classes, and mapped superclasses.
Instead of defining the properties inside persistence.xml
you can define them in a standard properties file (key=value) and pass a Properties
object to the createEntityManagerFactory()
method, e.g.:
Properties props = new Properties();
props.load(new FileInputStream("/some/path/persistence.properties"));
EntityManagerFactory factory = Persistence.createEntityManagerFactory("appName", props);
If you are using Maven as the build system, you can use Maven filters to replace the values during build time.
Or you can write a simple property placeholder replacement (which is internally used by spring itself)
Reference: https://stackoverflow.com/a/14724719/477435
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With