¿Cómo puedo obtener todas las clases de @Entity de una Unidad de Persistencia?
Estoy escribiendo un programa de utilidad independiente que, dado un tarro que contiene una unidad de persistencia anotada JPA-2, necesita obtener mediante programación una lista de todas mis clases de @Entity en una unidad de persistencia particular.
Me gustaría decidir cuál de los 2 enfoques sería el camino a seguir para obtener esta información y por qué; O si hay otra forma mejor que no haya pensado.
Solución 1El programa Java pone jar en el classpath, crea una unidad de persistencia a partir de las clases en el jar usando metodologías JavaSE. Luego usa las clases javax.persistence para obtener el Metamodelo JPA, retira la lista de tokens de clase de eso.
<code>EntityManagerFactory emf = Persistence.createEntityManagerFactory("MY_ PERSISTENCE_UNIT"); Metamodel mm = emf.getMetamodel(); // loop these, using getJavaType() from Type sub-interface to get // Class tokens for managed classes. mm.getManagedTypes(); </code>Solucion 2
El programa escanea los directorios y archivos dentro del jar especificado para los archivos persistence.xml, luego encuentra uno con el nombre de unidad de persistencia especificado. Luego XPath el archivo para obtener la lista de<class>
Elementos XML y leer los nombres de clase completos desde allí. A partir de nombres, construir tokens de clase.