Intro

J'ai créé ce blog pour partager avec vous une de mes passions : le développement informatique. J'essaierais de vous faire profiter de mes découvertes et surtout de publier régulièrement des articles. N'hésitez pas à apporter vos commentaires!

lundi 11 avril 2011

Génération de classes modèles avec Hibernate Tools

Il est révolu le temps où un développeur devait gérer le mappings de ses classes modèles à la main. De nombreux outils existent actuellement afin de générer les classes modèles à partir d’un schéma de données physiques. Un des outils les plus connus est Hibernate Tools (à l’heure actuelle en version 3.4.0), au travers de cet article je vais tenter de vous expliquer comment utiliser cet outil avec Eclipse (Helios).

Pour commencer, il vous faut installer le plugin Hibernate Tools. Pour se faire rien de plus simple, il suffit de cliquer sur "Help > Install New Software …" et d’ajouter cet url : "http://download.jboss.org/jbosstools/updates/stable/" dans les update site. Sélectionner le plugin Hibernate Tools (cf fig.1.1), cliquer sur next et terminer l’installation.
fig.1.1 : Choix plugin Hibernate Tools dans eclipse

L’étape suivante consiste à configurer une console Hibernate Tools. Ouvrer la perspective Hibernate ("Window > Open Perspective > other") et dans l’onglet "Hibernate configurations", faites clic droit puis choisissez l’option "add Configuration". Dans l’onglet "Classpath" cliquez sur "add Project" et choisissez le projet dans lequel vous allez générer vos classes modèles. Revenez dans l’onglet "Main", dans le champ "Project" cliquez sur "Browse" et choisissez le même projet que précédemment. Enfin il faut créer une connexion vers la base de données cible. Cliquer sur le bouton "new" juste à côté du champ "Database Connection" et configurer l’accès à votre base.

Une fois la console Hibernate créée, nous ne sommes plus très loin de notre première génération de classe modèle (un peu de courage :) ). Cliquez dans le menu du Haut sur Hibernate Code Generation Configuration (cf fig.1.2).
fig.1.2: Menu pour la configuration de la génération

Dans le champ "Console Configuration", sélectionnez celle que nous venons de créer. Cliquez ensuite sur la combobox "Reverse Engineer from JDBC connection". Allez dans l’onglet "Exporter" et choisissez les artefacts que vous voulez générer (généralement Domain code et Hibernate XML). Cliquez sur run…

Voilà vous venez de générer vos premières classes modèles. Dans cet article la configuration de la génération est très basique. Je ne pourrais que trop vous conseiller de faire un tour sur la documentation officiel d’Hibernate Tools mais surtout n’hésiter pas à tester les différentes configurations possibles. Si vous avez des questions, je me ferais un plaisir d’y répondre. Je ferais sûrement un autre article pour vous expliquer comment générer des classes modèles annotées (et comment contrôler leur génération via des templates).

10 commentaires:

Anonyme a dit…

Bonjour Tom,
Merci beaucoup pour le tuto, ça m'a beaucoup aider ;)
Je me demande si vous avez le tuto de création de classes modèle annotées.
Merci

_TomTom_ a dit…

Salut,
Pour générer des classes annotées il suffit juste de cocher l'option "generate EJB3 annotations" qui se trouve dans l'onglet "exporter" du wizard de configuration de la génération du code.

Raphi a dit…

Bonjour,
quel est l'intérêt de générer ces annotations?

_TomTom_ a dit…
Ce commentaire a été supprimé par l'auteur.
_TomTom_ a dit…

Cela évite de les gérer à la main, donc on gagne du temps à ne pas les écrire et on évite pas mal de bugs au passage. De plus pour des modèles de données qui évoluent constamment (lors de projet en mode agile par exemple), la modification de relations peut vite devenir chronophage. Après s'il s'agit de choisir entre la configuration par annotations ou par fichiers de config hbm, tout dépend du besoin du projet.

Raphi a dit…

Donc si je comprend bien, on doit choisir entre les annotations ou les hbm.xml?
Je dois reprendre une base de données conséquente (70 tables) ayant beaucoup de relations entre elles cependant les précédent développeurs n'ont pas mis de foreign key...
Hibernate peut-il m'aider dans ce cas?

Merci pour les réponses!

_TomTom_ a dit…

Oui tu dois choisir entre une configuration par annotation ou par fichiers hbm.

Hibernate ne créera pas les relations pour toi s'il n'y a pas de foreign key (jamais testé ce cas mais je suis quasi sûr que non).

Ensuite les actions à mettre en place pour rendre tes données plus consistantes dépendront de tes possibilités d'actions. Peux-tu modifier le modèle physique? Sur quelle base de données travailles-tu?

Désolé pour le temps de réponse, j'essaierais de répondre plus rapidement la prochaine fois :)

Raphi a dit…

Oui je peux modifier le modèle et on doit utiliser MySQL.

J'ai recréer toutes les foreign keys et hibernate a correctement généré les beans! Cependant il semble avoir un peu de mal avec les relations one to many car il créé des Set sans typage de l'objet. Est ce normal?

Merci

_TomTom_ a dit…

Tu as suivi la bonne démarche en recréant ces foreign key!(c'était le but de ma question sur la possibilité de modifier le modèle physique :) )
Pour ton problème de typage des Set la solution est toute simple, dans l'onglet exporters de la console de configuration Hibernate, il faut cocher l'option "use Java 5 syntax". En effet les types paramétrés ne sont apparus que dans la version 5 de java d'où cette option de compatibilité.

Raphi a dit…

je te remercie, ca marche nickel :) !