I've looked for answers for this but haven't been able to find any so asking these questions to this very apt community!
- I have a standalone java application that gets deployed in many environments: dev, qa, stage, production. As such each environment has its own datasource/db and there are property files that govern different properties depending upon which environment the application is running from. As such, in my persistence.xml I've defined a persistence unit for dev. In the same file, I'd like to define the persistence units for the other environments as well. When doing so, Eclipse (Indigo - latest) complains as follows: "Multiple persistence units defined - only the first persistence unit will be recognized". I'm assuming that what I've done is legal and this is an Eclipse issue.. can anyone confirm? Also, is this what best practices would dictate given my current setup?
- I was under the assumption that any entity bean marked with a @Entity annotation would automatically get picked up without having to explicitly define it in the persistence.xml file like so:
<class>com.mycompany.model.MyEntityBean</class>
. If I omit the explicit inclusion of the entity class in the file, the entity bean - although annotated - throws an error: "Class "com.mycompany.model.MyEntityBean" is mapped, but is not included in any persistence unit" What I have I assumed wrong? - My final question is regarding db credentials: is it best practice to put my db credentials in the persistence.xml file in plain text? Are there any safer alternatives to this?
Thank you community!
p.s - I'm using EclipseLink as the JPA vendor not that it should matter??
Here is an example of my persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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_2_0.xsd">
<persistence-unit name="Development">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.mycompany.model.MyEntityBean</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.ibm.db2.jcc.DB2Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:db2://xxxxxxx" />
<property name="javax.persistence.jdbc.password" value="xxxxxx" />
<property name="javax.persistence.jdbc.user" value="xxxxxxxx" />
</properties>
</persistence-unit>
<persistence-unit name="QA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.mycompany.model.MyEntityBean</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.ibm.db2.jcc.DB2Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:db2://xxxxxxx" />
<property name="javax.persistence.jdbc.password" value="xxxxxx" />
<property name="javax.persistence.jdbc.user" value="xxxxxxxx" />
</properties>
</persistence-unit>
</persistence>