Introduction

Dans le cadre du cours de JEE, nous devons présenter un couple de frameworks gérant une application basée sur le MVC (Model, View, Controller). Ces deux frameworks gèrent des tâches distinctes au sein de l'architecture MVC : l'un la persistance (le model) et l'autre la vue et le contrôleur. Notre choix s'est porté sur le couple Tapestry/Hibernate.

Présentation des frameworks

Tapestry

Tapestry est un framework JAVA open source conçu par Howard Lewis Ship, il y a 8 ans, et continue à ce jour à être développé activement. La dernière version à ce jour et aussi la plus utilisée est Tapestry5 et c'est celle-ci que nous allons vous présenter.


Tapestry est un framework qui gère deux couches du model MVC : le contrôleur et la vue. Le souci de tout framework est de maximiser la séparation des couches en les rendant les plus indépendantes possibles. Cette indépendance rend l'application plus souple et surtout plus évolutive. Nous verrons comment Tapestry résoud cette problématique à travers la notion de template XML.


La programmation WEB est très différente de la programmation de logiciel lourd. Tapestry brise cette différence en introduisant son concept de composant, où une action sur un composant d'une page déclenchera la logique métier associée. C'est le procédé traditionnel des applications bureautiques.

Tapestry retranscrit ce paradigme dans son framework où une page de la vue ne sera ni plus ni moins fait d'un ensemble de composants où une action sur un de ces derniers exécutera aussi la logique métier associée. Ainsi, le développeur traditionnel d'applications se sentira dans un environnement familier. Tapestry offre également la possibilité de créer son composant personnalisé afin d'améliorer la réutisabilité.


Toujours dans ce concept de composant, Tapestry offre des composants Ajax permettant d'utiliser cette technologie aujourd'hui incontournable sans même utiliser une ligne de Javascript.

Tapestry gère également la validation et l'internationalisation, intègre directement l'inversion de contrôle et l'injection de dépendance dans son framework, deux concepts qui nécessite normalement un additionnel framework, comme la référence en la matière Spring. Toutefois si l'utilisateur souhaite toujours utiliser Spring, Tapestry fournit tous les outils pour l'intégrer et permet aux développeurs d'utiliser Spring à travers Trapestry.


Hibernate

Hibernate est un framework gérant la persistance. On entend par persistance le stockage d'informations dans une base de données relationnelle. Ces dernières utilisent le langage SQL (Structured Query Langage). Les bases de données relationnelles ne sont pas spécifiques à JAVA. En effet, elles ont leur propre langage et peuvent être utilisées par n'importe quelle application quelque soit le langage. Ceci oblige ainsi le développeur à acquérir des connaissances parfois pointues en SQL.

Jusqu'a présent la manipulation de base de données se faisait avec l'interface JDBC. Cependant, toute la couche SQL était directement dans le code JAVA ce qui le rendait lourd et difficilement maintenable. De plus, selon le fournisseur de base de données, les opérations SQL peuvent être très différentes, donc, toutes migrations vers une base de données auraient pour conséquence une quantité non négligeable de modifications.

Pour résoudre cette problématique, le framework Hibernate introduit le concept de mapping relationel objet qui consiste à retranscrire la base de données comme un ensemble d'objets JAVA. Il utilise pour cela un fichier XML, dit fichier de mapping, qui va lier une table de la base de données à un objet JAVA.

Ainsi, le développeur Java manipule une base de données à travers des objets JAVA. Par conséquent, il n'aura plus à se préoccuper de toute la couche SQL. Hibernate laisse néanmoins la possibilité aux développeurs de continuer à utiliser SQL. De plus, Hibernate est capable d'effectuer toutes les opérations que les bases de données peuvent faire, les transactions en sont un parfait exemple.

Hibernate possède également son propre langage SQL : le HQL (Hibernate Query Langage). Le HQL étant plus souple et plus intuitif que SQL.

Installation

IDE et serveur

Le serveur choisi pour déployer est Tomcat v.6 de la fondation Apache, ce dernier peut être télécharger ici

Le développement à été réalisé sur l'IDE Eclipse EE. Tout Eclipse compatible J2EE serait tout aussi efficace.

Installez Tomcat et téléchargez un Eclipse capable de réaliser du J2ee si vous ne l'avez pas déjà fait.

Ouvrez Eclipse et créer un Dynamic Web Project. Une fenètre s'ouvrira et vous demandera si vous voulez l'associer à un serveur. Choisissez Tomcat v6

Installation des librairies et du driver de votre base de données

Téléchargez les JARs ci-dessous et à travers votre explorateur, copier les dans le repertoire \WEB-INF\lib du projet.

Télécharger les JARs pour Tapestry ici

Télécharger les JARs pour Hibernate ici

La base de données utilisé est MySQL. Vous devez ajouter, de la même maniere que les jar ci dessus, le driver de connection que vous pouvez télécharger sur le site officiel

Mise en place de Tapestry

Vous pouvez déjà commencer en créant vos fichiers tml et leur .java associé. Reportez-vous à la présentation et aux ressources documents fournit dans la biblio.

Mise en place d'hibernate

Il existe beaucoup de plugins facilitant la génération des fichiers de mapping et des classes à partir du model relationnel. Celui utilisez dans ce projet est hibernate synchronizer que vous pouvez télécharger ici. Copiez le contenu dans votre repertoire plugin dans Eclipse et redémarrez Eclipse.

La première étape consiste à générer le fichier de configuration, pour cela suivez les intructions suivante:

  • A la racine de votre projet, faites New -> Other -> Hibernate -> Hibernate Configuration File

  • Un fenetre apparait, renseignez vos parametres (type de la base , nom de votre driver,chemin de la base de données ,login , pass) puis terminer

La deuxième étape consiste a générer les fichiers de mapping et les classes correspondantes associées à votre model relationnel. Les instructions sont les suivantes :

  • A la racine de votre projet faire New -> Other -> Hibernate -> Hibernate Mapping File

  • Une fenêtre s'ouvre, cliquez sur refresh et vous devriez normalement voir la liste de vos tables. Cochez les tables que vous voulez mapper puis terminez

  • Allez sur le fichier généré, faites un clique droit -> Hibernate synchronier -> Synchonize file. Vos classes et vos fichiers de mapping sont maintenant générés dans le package entré en parametre


Hibernate est maintenant configuré, reportez vous à la présentation et aux documents ressources pour le fonctionnement. Voir aussi l'application exemple gestion de contact qui vous entrainera à travers un CRUD et vous permettra de comprendre tous les concepts de base derriere ces deux frameworks.

Télécharger la présentation Powerpoint ici


Voici un exemple d'application pour les frameworks Hibernate/Tapestry. Cette application permet la gestion de contacts.

Télécharger le script SQL (la BDD utilisée est MySQL) ici

Télécharger le code source de l'application ici. Un fichier README est disponsible ici, il contient le login et le pass administrateur.

L'objectif principal de cette application est de vous donner une introduction au deux frameworks que sont tapestry hibernate

Bibliographie

Tapestry :

Site officiel

Turorial developpez.com

Tapestry 5 by Alewander Kolesnikov

Hibernate :

Faq developpez.com Hibernate

Tutorial officiel

Javadoc Hibernate

Hibernate in Action par CHRISTIAN BAUER et GAVIN KING