2012-06-08 23 views
7

¡He buscado respuestas para esto pero no he podido encontrar ninguna preguntando así a esta comunidad tan apta!Unidades de persistencia múltiple JPA para dev/qa/stage/production

  1. Tengo una aplicación java independiente que se implementa en muchos entornos: dev, qa, stage, producción. Como tal, cada entorno tiene su propio origen de datos/base de datos y hay archivos de propiedades que rigen diferentes propiedades según el entorno desde el que se ejecuta la aplicación. Como tal, en mi persistence.xml he definido una unidad de persistencia para dev. En el mismo archivo, me gustaría definir las unidades de persistencia para los otros entornos también. Al hacerlo, Eclipse (Indigo - latest) se queja de la siguiente manera: "Múltiples unidades de persistencia definidas - solo se reconocerá la primera unidad de persistencia". Estoy asumiendo que lo que he hecho es legal y esto es un problema de Eclipse ... ¿alguien puede confirmarlo? Además, ¿esto es lo que dictarían las mejores prácticas dada mi configuración actual?
  2. Supongo que cualquier entidad bean marcada con una anotación @Entity se recogió automáticamente sin tener que definirla explícitamente en el archivo persistence.xml como lo siguiente: <class>com.mycompany.model.MyEntityBean</class>. Si omito la inclusión explícita de la clase de entidad en el archivo, el bean de la entidad, aunque anotado, arroja un error: "Clase" com.mycompany.model.MyEntityBean "se asigna, pero no está incluido en ninguna unidad de persistencia" ¿Qué he asumido mal?
  3. Mi última pregunta es con respecto a las credenciales de db: ¿es una buena práctica poner mis credenciales de db en el archivo persistence.xml en texto sin formato? ¿Hay alguna alternativa más segura a esto?

¡Gracias, comunidad!

p.s - Estoy usando EclipseLink como el proveedor de JPA no es que no importe?

Aquí es un ejemplo de mi 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>  
+0

¿Puede agregar su contenido persistence.xml? Esto ayudaría a todos a comprender mejor. –

+0

Hola Nayan, he agregado un recorte de mi persistence.xml gracias! – ustad

Respuesta

4
  1. "unidades de persistencia múltiples definidos - sólo la primera unidad de persistencia será reconocido" es cuestión de Eclipse (Dalí). Más sobre el tema que puede encontrar en bug 231527.

  2. Como tiene una aplicación Java SE independiente, las entidades deben aparecer en persistence.xml. En la memoria de este se explica de la siguiente manera:

 To insure the portability of a Java SE application, it is necessary 
     to explicitly list the managed persistence classes that are included 
     in the persistence unit using the class element of the persistence.xml 
     file. 
  1. Si no quiere tener contraseñas como texto sin formato, alguna información sobre alternativas se pueden encontrar de EclipseLink documentation.
+0

Gracias por la información Mikko! Habría votado pero aún no califico :) – ustad

+0

Gracias Mikko, acepté la respuesta. Parece que se están cumpliendo varias unidades de persistencia y es el plugin de JPA incorporado al eclipse el que se queja. – ustad

1

Puede desactivar la advertencia errónea haciendo lo siguiente. Estas instrucciones son para Eclipse Luna.

Project Properties => JPA => Errors/Warnings 

Comprobar Enable project specific settings

Expand Project grupo

Cambio Multiple persistence units defined: a Ignore.

Cuestiones relacionadas