L’écriture des fichiers de mapping et des Java beans pour Hibernate représente souvent une tâche longue et répétitive. Quelques outils sont sortis pour faciliter cette tâche sans réel succès. Pourtant, Hibernate Tools[1] semble être l’outil qui permet d’augmenter la productivité des développeurs qui s’attelle au travail du mapping entre la base de données et les objets Java avec Hibernate.

Cet outil s’intègre dans Eclipse et est également disponible pour JBoss IDE. Cette solution propose pas moins[2] :

  • d’un éditeur de fichier de mapping
  • d’une console de configuration (connexion aux bases de données, visualisation des relations entre les Java beans, exécution du HQL[3], etc…)
  • ingénierie inverse : génération automatique à partir d’une base de données (fichiers de configuration et de mapping, Java beans, DAO, etc…)
  • des assistants de création
  • des tâches Ant

En résumé, Hibernate Tools permet de gagner énormément de temps lorsqu’il faut générer toute la couche d’accès aux données avec Hibernate. Cependant, il faut lui reconnaître quelques limitations. En effet, lorsque le modèle de la base de données est très proche du modèle objet, il se révèle extrêmement efficace. Malheureusement, le modèle objet n’est pas toujours calqué sur le modèle relationnel. Et dans ce cas Hibernate Tools pêche quelque peu[4].

Même si Hibernate Tools ne répond pas à tous les cas de figures, il a le mérite de bien déblayer le terrain. Puisqu’il est possible de générer une première version d’un mapping simple avec ce dernier, puis de modifier le mapping à la main pour résoudre les cas particuliers.

Un outil à surveiller de très près et surtout à utiliser !

Notes

[1] Il est considéré par certain comme le digne successeur de Middlegen.

[2] Le carnet de route d’Hibernate Tools permet de savoir exactement ce qu’il est possible de faire aujourd’hui et ce qu’il sera possible de faire demain.

[3] Avec une traduction à la volée en SQL !

[4] Même s’il propose de personnaliser l’ingénierie inverse et laisse la possibilité d’implémenter des stratégies d’ingénierie inverse.