Cómo detectar de forma automática con entidades OpenJPA?
-
28-09-2019 - |
Pregunta
Busco una detección entidad en OpenJPA. Que no es necesario declarar todas las entidades en el persistence.xml.
Edit: Lo siento, se me olvidó decir que desarrollo una aplicación Java SE.
Solución
Leer la sección del href="http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_pc_pcclasses" rel="nofollow noreferrer"> Lista de clase persistente en el manual de usuario.
A diferencia de muchos productos ORM, OpenJPA hace No necesita saber acerca de la totalidad de su clases persistentes en el arranque. OpenJPA descubre nuevas clases persistentes automáticamente a medida que se cargan en la JVM; de hecho, se puede introducir una nueva clases persistentes en ejecución aplicaciones bajo OpenJPA.
- Nota: Hay un par de restricciones que se documentan en el manual del usuario pero me dejaron ésos hacia fuera para mantener este post breve.
Otros consejos
Por la especificación JPA, debe enumerar todas las clases de forma explícita en un entorno Java SE:
6.2.1.6 mapeo-archivo, fichero-jar, clase, excluimos-UNLISTED-clases
(...)
Una lista de persistencia administrada denominada clases también pueden ser especificados en vez de, o además de, los archivos JAR y archivos de asignación. cualquier asignación anotaciones de metadatos encuentran en estos clases serán procesados, o será asignada utilizando el mapeo incumplimientos de anotación. El elemento de clase se utiliza para enumerar una persistencia gestionada clase. Una lista de todos nombrados lograron clases de persistencia se debe especificar en entornos Java SE para asegurar portabilidad. Portable Java SE aplicaciones no deben confiar en la otros mecanismos descritos aquí para especifique la persistencia gestionada clases de una unidad de persistencia. Persistencia proveedores también pueden requerir que el conjunto de clases de entidad y clases que se van a gestionar deben estar plenamente enumerado en cada una de las
persistence.xml
archivos en Java SE ambientes.Todas las clases contenidas en la raíz de la unidad de persistencia también se buscan para la persistencia gestionada anotada clases y cualquier metadatos de mapeo anotaciones que se encuentran en ellos serán procesan, o serán mapeados utilizando los valores por defecto de mapeo de anotación. Si no se pretende que la anotada persistencia clases contenida en la raíz de la unidad de persistencia se incluirá en el unidad de persistencia, la elemento
exclude-unlisted-classes
debería ser usado. los elementoexclude-unlisted-classes
es no destinadas a su uso en Java SE ambientes.
Ahora, si no te importa estar no es portátil, es posible utilizar una extensión de proveedor, pero no pude encontrar algo similar a la propiedad hibernate.archive.autodetection
de Hibernate en OpenJPA.
APP integración de la primavera (que permite el escaneo ruta de clase más flexible) es otra opción.
También existe la APP-plugin que puede hacer esto para usted. La última versión no está disponible en Maven central por lo que tendrá para clonar y construir usted mismo.