web-dev-qa-db-fra.com

Génération de code JPA Java

Je recherche spécifiquement la technique de génération de code JPA

Premièrement, quels sont tous les projets susceptibles de générer un code conforme à JPA? (Par exemple, HibernateTools)

Deuxièmement, j'aimerais également personnaliser l'utilitaire de génération de code, car il doit être conforme aux normes de notre entreprise.

Sinon, quels sont tous les cadres disponibles pour générer du code Java à l'aide de la réflexion? afin que je puisse écrire à partir de zéro.

Remarque: j'ai utilisé Eclipse pour générer du code JPA et le refactoriser à plusieurs reprises pour le rendre conforme.

28
Mohan Narayanaswamy

J'ai aussi du mal à comprendre la question, mais je vais essayer de reformuler:

  • Vous avez beaucoup de données dans une base de données et souhaitez y accéder via JPA
  • Vous ne voulez pas écrire manuellement les classes pour accéder aux différents DB/tables
  • Actuellement, toutes/la plupart de vos classes de modèle sont générées à partir d’Eclipse.
  • Ces modèles ont des annotations JPA
  • Les classes de modèle (ou les annotations) ne sont pas conformes aux normes de l'entreprise

Lorsque vous parlez de "génération de code JPA Java", je comprends la génération de classes de modèle annotées JPA à partir d'une connexion à une base de données fournie. La plupart des frameworks se réfèrent souvent à cela en tant que reverse engineering.

Maintenant vous avez deux questions:

  1. Quels générateurs de code peuvent être recommandés pour générer des classes annotées JPA?
  2. Est-il possible de personnaliser la sortie de ces cadres, et de quelle manière?

Pour répondre à la première question:

J'aime beaucoup la génération de code Netbeans, surtout si vous affichez les résultats à quelqu'un qui n'est pas familier avec JPA.

Au niveau de la personnalisation, je ne peux que partager mon expérience avec Hibernate Tools. Pour obtenir des résultats reproductibles, essayez d’utiliser les tâches basées sur ant . Vous pouvez facilement ajouter des cibles à votre construction et la génération de code peut être effectuée à deux niveaux:

Avec les modèles, vous devriez pouvoir couvrir la plupart des normes de l’entreprise. Recherchez dans le répertoire pojo du paquet hibernate-tools. Le moyen le plus simple de personnaliser la génération de code consiste à copier et adapter les modèles et à les placer avant le fichier hibernate-tools.jar dans la tâche ant utilisée pour créer les pojos.

Comme déjà souligné dans un autre commentaire, il pourrait être difficile de modifier le code généré par la suite. J'espère que les conseils suivants peuvent vous aider:

  • Essayez de séparer les fichiers source générés et personnalisés dans des dossiers différents.
  • Pensez à utiliser @MappedSuperclass pour les classes que vous voudrez peut-être adapter dans une étape manuelle.
22
Kariem

Une autre solution efficace pour la génération de code JPA est "Telosys Tools".

Un plugin Eclipse fonctionnant à partir d'une base de données existante (approche "base de données") avec modèles personnalisables. Cette solution est plus flexible que Dali grâce à son modèle léger et aux modèles Velocity (partagés sur GitHub).

Voir le site web: http://www.telosys.org/

Le plugin sur le marché Eclipse: http://marketplace.Eclipse.org/content/telosys-tools

Une brève description du principe: http://labs.sogeti.com/code-generation-can-it-be-simple-and-pragmatic/

Pour la génération JPA, utilisez les modèles JPA disponibles sur GitHub: https://github.com/telosys-templates-v3

5
lgu

J'ai utilisé Plugin Dali Persistence Eclipse , cet outil est disponible au téléchargement via le site Indigo Java EE SR1 .

Une fois le plug-in installé, pour effectuer un reverse engineering de votre base de données, vous devez créer un nouveau projet JPA, définir la connexion à la base de données, lancer le téléchargement automatisé du moteur d'exécution JPA (dans mon cas, Eclipse Link), puis lancer le processus de génération. 

Au cours du processus de génération de code, il vous est demandé de fournir des détails sur les mappages de tables et les classes générées. A la fin de la génération, le code est propre.

3
psuzzi

Le projet lombok semble vous permettre de générer des requêtes nommées de base. Il s'agit d'une autre approche utilisant des annotations et la génération de code au moment de la compilation.

Voir:

Un gars sur le forum d'hibernation semble utiliser une approche de génération de code traditionnelle avec Hibernate Tools: https://forum.hibernate.org/viewtopic.php?f=9&t=962223&p=2315766&hilit=named+queries+generate# p2315766

Je suis d'accord avec Cletus sur le point que vous ne pouvez pas générer toutes les requêtes nommées, mais je suppose que nous pouvons imaginer générer des requêtes nommées de base telles que des outils de recherche basés sur un ou plusieurs champs de l'objet.

1
snowflake

Hibernate Tools est l'outil idéal/le plug-in Eclipse pour la génération inversée de code jpa. Cela fait maintenant partie de JBoss Tools. Donc, dans votre Eclipse, commencez par installer JBoss Tools.

Créez ensuite un projet JPA. Ce projet agira en tant que détenteur de tous vos codes/configurations liés au projet de génération inversée. L'installation de JBoss Tools vous donne tout d'abord l'avantage de créer votre configuration Hibernate (qui fait partie d'Hibernate Tools) avec votre projet JPA.

La prochaine étape consisterait à utiliser les outils Hibernate pour générer en sens inverse vos entités JPA POJO correspondant à vos tables de base de données.

Pour comprendre en détail les étapes de la génération inverse de JPA POJO, vous pouvez consulter le didacticiel suivant ... http://www.javabrahman.com/j2ee/how-to-do-re-reverse-code-generation-of -hibernatejpa-pojo-entités-using-jboss-tools-plugin Eclipse/

Le didacticiel ci-dessus contient également des liens vers des didacticiels pour la création d'un projet JPA et pour l'installation de JBoss Tools dans votre installation Eclipse, deux conditions indispensables à la génération de code inverse par les entités JPA POJO.

0
Frank

check out JPM2Java , C'est un générateur de code pour JPA. Le seul problème est qu'il ne génère pas de code JPA à partir de fichiers ou de tables SQL, vous aurez besoin d'un fichier orm.xml. Si vous recherchez un outil pour générer du code directement à partir de tables, vous pouvez essayer Netbeans. Il a des options pour générer du code JPA directement à partir de tables

0
Rajesh

Outil graphique open source permettant de générer des classes JPA, de visualiser et de modifier une base de données, de procéder à l’ingénierie inverse du code source existant et d’importer des modèles à partir d'une base de données existante.

Pour NetBeans: http://jpamodeler.github.io/
Pour Eclipse: https://www.Eclipse.org/webtools/dali/

0
jGauravGupta