2009-01-17 19 views
27

Estoy buscando específicamente la técnica de generación de código JPAgeneración de código Java JPA

En primer lugar, ¿qué es todo lo que el proyecto podría generar código compatible con JPA? (Por ejemplo, HibernateTools)

En segundo lugar, también me gustaría personalizar la utilidad de generación de código, ya que debe cumplir con nuestros estándares corporativos.

Si no, ¿cuál es todo el marco disponible para generar código java mediante la reflexión? entonces puedo escribir desde cero.

Nota: utilicé eclipse para generar código JPA y refactorizarlo repetidamente para que sea compatible.

Respuesta

22

que también tienen dificultades para entender la pregunta, pero voy a tratar de reformular:

  • Usted tiene una gran cantidad de datos en una base de datos y desea acceder a él a través de la APP
  • Usted no quiere escribir manualmente las clases para acceder a los diferentes DBs/mesas
  • Actualmente, todos/la mayoría de las clases del modelo se generan desde dentro de Eclipse
  • Estos modelos tienen anotaciones JPA
  • las clases del modelo (o el Annot aciones) no cumplen con los estándares corporativos

Cuando dice "Generación de código java JPA", entiendo generar clases de modelo anotadas de JPA a partir de una conexión de base de datos suministrada. La mayoría de los marcos a menudo se refieren a esto como ingeniería inversa.

Ahora usted tiene dos preguntas:

  1. Lo generadores de código se puede recomendar para generar la APP clases anotadas?
  2. ¿Es posible personalizar la salida de estos marcos, y de qué manera?

Para responder a la primera pregunta: ¿

me gusta mucho el Generación de código Netbeans, especialmente si muestra los resultados a alguien que no está familiarizado con JPA.

En el nivel de personalización que sólo puedo compartir la experiencia que tuve con Hibernate Herramientas. Especialmente para resultados reproducibles, intente utilizar el ant-based tasks. Usted puede agregar fácilmente algunos de los objetivos de su construcción y generación de código se puede hacer en dos niveles:

Con las plantillas que usted debería ser capaz de cubrir la mayoría de los estándares corporativos. Mire en el directorio pojo del paquete hibernate-tools. La forma más fácil de personalizar la generación de código es copiar y adaptar las plantillas y los harán antes de la hibernación-tools.jar en la tarea de hormigas utilizado para crear los POJOs.

Como ya se señaló en otro comentario, que podría ser difícil de modificar el código generado después. Espero que los siguientes consejos lo ayuden:

  • Intente separar los archivos fuente generados y personalizados en diferentes carpetas.
  • pensar en usar @MappedSuperclass de clases que es posible que desee para adaptarse en un paso manual.
-4

Bien, básicamente usted tiene las cosas incorrectamente de la manera siguiente: JPA is the generation tool.

Lo digo porque lo único que se puede generar entidades JPA es SQL y el objetivo de JPA es hacer las cosas al revés. Primero define su modelo de objeto y, a partir de eso, puede generar sus tablas y consultas.

Por ejemplo, he visto proyectos que usan Hibernate para definir sus entidades y luego tienen un script de construcción ant que crea la base de datos a partir del modelo de entidad de Hibernate.

Las definiciones de entidades JPA, especialmente las hechas con anotaciones, no son exactamente onerosas. Realmente son su mejor opción como lo primero que debe hacer en lugar de ser el producto de otra cosa.

Además, otra herramienta no te ayudará a escribir consultas con nombre, definir las opciones de cascada correctas en las relaciones, etc. Y si hubieras generado código, ¿cómo manejarías modificarlo luego?

Simplemente no es el camino correcto a seguir.

+0

esta pregunta porque downvoted abordando el problema desde ambos lados es aceptable y ambos tienen ventajas y desventajas – IcedDante

0

echa un vistazo a JPM2java, es un generador de código para JPA. La única pega es que no genera código JPA a partir de archivos o tablas SQL, necesitaría un archivo orm.xml. Si está buscando una herramienta para generar código directamente desde tablas, puede probar Netbeans. Cuenta con opciones para generar código JPA directamente de las tablas

1

Lombok proyecto parece que le permite generar consultas con nombre básicas, esto es otro enfoque utilizando anotaciones y generación de código en tiempo de compilación.

Ver:

Un tipo sobre el foro de hibernación parece utilizando un enfoque de generación de código traditionnal con Hibernate Herramientas: https://forum.hibernate.org/viewtopic.php?f=9&t=962223&p=2315766&hilit=named+queries+generate#p2315766

Estoy de acuerdo con Cletus en el punto de que no puede generar todas las consultas con nombre, pero Supongo que podemos imaginar generar consultas con nombre básico tales buscadores basados ​​en uno o varios campos del objeto.

3

He utilizado Dali Persistence Eclipse Plugin, la herramienta está disponible para descargar a través del Indigo Java EE SR1 update site.

Después de instalar el complemento, para realizar una ingeniería inversa de su base de datos, debe crear un nuevo proyecto JPA, establecer una conexión de base de datos, iniciar la descarga automática de tiempo de ejecución JPA (en mi caso Eclipse Link) y luego iniciar proceso de generación

Durante el proceso de generación de código, se le solicita que proporcione detalles sobre las asignaciones de tabla y las clases generadas. Al final de la generación, el código está limpio.

5

Otra solución eficiente para la generación de código JPA es "Telosys Herramientas"

Un plugin de Eclipse de trabajo a partir de una base de datos existente (enfoque de "base de datos coquetea") con plantillas personalizables. Esta solución es más flexible que Dali gracias a su modelo ligero y las plantillas Velocity (compartido en GitHub)

Ver el sitio web: http://www.telosys.org/

El plug-in de Eclipse mercado: http://marketplace.eclipse.org/content/telosys-tools

Una breve descripción de el principio: http://labs.sogeti.com/code-generation-can-it-be-simple-and-pragmatic/

Para generación de APP, utilizar las plantillas de la APP disponibles en GitHub: https://github.com/telosys-templates-v3

+1

La nueva URL para Telosys plantillas es: https://github.com/telosys-tools/ El haz de APP es la "persistencia al JPA TTversion" – lgu

+0

lo intentará si funciona para mí .. Como soy nuevo en la APP. –

2

Minuteproject es una herramienta de generador y puede generar JPA1/JPA2, así como hibernar artefactos de tipo ORM. Se basa en ingeniería inversa desde la base de datos. Puede indicarle al generador que aplique convenciones para su código Java que no sigan su convención de base de datos, pero la asignación será correcta. (Ejemplo de tira DB prefijo de nombre; tabla que comienza con ADMIN_ como ADMIN_ENVIRONMENT son Entorno (sin administración) como clase Java) Por el momento hay 20+ conventions que lo ayudan a remodelar su modelo para que tenga menos aspecto DB por más Java -OO-friendly.

Otra característica interesante es updatable-code que permite modificar tanto el código generado y su modelo Y AHT la próxima generación sus modificaciones serán guardados! El generador realiza la fusión.

Las plantillas son de código abierto y funcionan con velocidad, es 'bastante' fácil agregar una pista para hacer una específica para su marco (por ejemplo, los aspectos de seguridad ... que son relevantes para su organización). Puede extender su plantilla a nivel de campo, entidad (tabla o vista), paquete (grupo de entidades), modelo, aplicación que proporciona flexibilidad, y dado que la plantilla de una pista se conoce mediante metadatos, es bastante fácil hacer referencia a ella desde otra plantillas y asociarlas por configuración con la convención de nomenclatura.

0

El plugin de herramienta/eclipse ideal para la generación inversa de código jpa es Hibernate Tools. Esto ahora se ha convertido en una parte de JBoss Tools. Entonces, en su eclipse comience con la instalación de JBoss Tools.

A continuación, cree un proyecto JPA. Este proyecto actuará como el titular de todos sus códigos/configuraciones relacionadas con el proyecto de generación inversa.Instalación de las herramientas de JBoss primero le da la ventaja de que su configuración de hibernación (Hibernate parte de Herramientas) se crea junto con el proyecto de la APP.

El siguiente paso sería el uso de las herramientas de Hibernate para revertir realmente generar sus entidades JPA POJO que corresponde a las tablas de bases de datos.

Para comprender los pasos para JPA POJO generación inversa detalle usted puede echar un vistazo a la siguiente tutorial ... http://www.javabrahman.com/j2ee/how-to-do-reverse-code-generation-of-hibernatejpa-pojo-entities-using-jboss-tools-eclipse-plugin/

El tutorial anterior también tiene enlaces a tutoriales para crear un proyecto de APP y también para la instalación de JBoss herramientas en su instalación de Eclipse ambos de los cuales son pre-requisitos para entidades JPA POJO revertir la generación de código.

-1

Por favor, echar un vistazo a JOOQ.

http://www.jooq.org/

Open Source está disponible .....

+0

¿Qué clase de ejemplos? ¿Puedes reproducir uno aquí? – Nielsvh

Cuestiones relacionadas