III. Le modèle MVC
1. Spring : Faciliter le développement et les
tests
Le framework Spring est un conteneur dit « léger
», c'est-à-dire une infrastructure similaire à un serveur
d'application J2EE. Il prend donc en charge la création d'objets et la
mise en relation d'objets par l'intermédiaire d'un fichier de
configuration qui décrit les objets à fabriquer et les relations
de dépendances entre ces objets (IoC - Inversion of Control). Le gros
avantage par rapport aux serveurs d'application est qu'avec SPRING, les classes
n'ont pas besoin d'implémenter une quelconque interface pour être
prises en charge par le framework. C'est en ce sens que SPRING est
qualifié de conteneur « léger ». L'idée du
pattern IoC est très simple, elle consiste, lorsqu'un objet A à
besoin d'un objet B, à déléguer à un objet C la
mise en relation de A avec B.
2. Struts : Mettre en place le MVC
Apache Struts est un framework libre pour développer
des applications web J2EE. Il utilise et étend l'API Servlet Java afin
d'encourager les développeurs à adopter l'architecture
Modèle-VueContrôleur. Struts permet la structuration d'une
application Java sous forme d'un ensemble d'actions représentant des
événements déclenchés par les utilisateurs de
l'application. Ces actions sont décrites dans un fichier de
configuration de type XML décrivant les cheminements possibles entre les
différentes actions. En plus de cela, Struts permet d'automatiser la
gestion de certains aspects comme par exemple la validation des données
entrées par les utilisateurs via l'interface de l'application. Ainsi, il
n'est plus besoin de venir coder le contrôle de chaque donnée
fournie par un utilisateur, il suffit de décrire les
vérifications à effectuer dans un fichier XML dédié
à cette tâche.
Le contrôleur est le coeur de l'application. Toutes les
demandes du client transitent par lui. C'est une servlet
générique fournie par STRUTS. Cette servlet
générique prend les informations dont elle a besoin dans un
fichier le plus souvent appelé struts-config.xml. Si la requête du
client contient des paramètres de formulaire, ceux-ci sont mis par le
contrôleur dans un objet javaBean héritant de la classe
ActionForm. Dans le fichier de configuration struts-config.xml, à chaque
URL devant être traitée par programme on associe certaines
informations :
1 Le nom de la classe étendant Action chargée de
traiter la requête.
1 Si l'URL demandée est paramétrée (cas de
l'envoi d'un formulaire au contrôleur), le nom du bean chargé de
mémoriser les informations du formulaire est indiqué.
Muni de ces informations fournies par son fichier de
configuration, à la réception d'une demande d'URL par un client,
le contrôleur est capable de déterminer s'il y a un bean à
créer et lequel. Une fois instancié, le bean peut vérifier
que les données qu'il a stockées et qui proviennent du
formulaire, sont valides ou non. Pour cela, une méthode du bean
appelée validate est appelée automatiquement (si le
développeur le souhaite et la définie) par le contrôleur et
renvoie éventuellement une liste des erreurs. Dans ce cas là, le
contrôleur n'ira pas plus loin et passera la main à une vue
déterminée dans son fichier de configuration pour informer
l'utilisateur des erreurs qu'il a commis lors de la saisie de son
formulaire.
Si les données du bean sont correctes, ou s'il n'y a
pas de vérification ou s'il n'y a pas de bean, le contrôleur passe
la main à l'objet de type Action associé à l'URL. Il le
fait en demandant l'exécution de la méthode execute de
cet objet à laquelle il transmet la référence du bean
qu'il a éventuellement construit. C'est ici que le développeur
fait ce qu'il a à faire : il devra éventuellement faire appel
à des classes métier ou à des classes d'accès aux
données. A la fin du traitement, l'objet Action rend au contrôleur
le nom de la vue qu'il doit envoyer en réponse au client.
Le contrôleur envoie cette réponse. L'échange
avec le client est terminé.
3. Hibernate : La persistance des objets
a. Pourquoi Hibernate ?
Hibernate est un framework open source gérant la
persistance des objets en base de données relationnelle. La manipulation
de SQL dans le langage de programmation JAVA est rendue possible par
l'utilisation du JDBC. Puisque, chaque requête est effectuée sur
le modèle logique de la base de données, cette approche
présente l'inconvénient de lier très fortement le code de
l'application au schéma de la base de données. En
conséquence, toute évolution apportée au modèle
logique doit être répercutée sur le code de
l'application.
L'outil Hibernate propose une solution à ce
problème. Celleci consiste à définir, dans des fichiers de
configurations, le lien entre le diagramme de classes de l'application qui
exploite une base de données et le modèle logique de cette base
de données. Il permet ensuite de manipuler les données de la base
de données sans faire la moindre référence au
schéma de la base de données en utilisant l'API fournie par cet
outil grâce au lien établi dans les fichiers de configuration.
b.
Rapport de Projet J2EE Site de E-Commerce
janv. 8
7
Configuration d'Hibernate
Hibernate est conçu pour pouvoir être utilise
dans différents types d'architectures d'application. Pour cela, chaque
application doit indiquer à Hibernate comment celui-ci peut
accéder et manipuler la source de données dans un fichier de
configuration nommé hibernate.cfg.xml.
Les principaux éléments à paramétrer
sont les suivantes :
( Le SGDB utilisé. Chaque SGBD propose une
implémentation du langage SQL qui diffère souvent de la norme
SQL. Hibernate doit connaitre le type de SQL qu'il doit
générer.
( La Connexion à la base de données. Si la
connexion à la base de données se fait en utilisant JDBC, il faut
indiquer à Hibernate, le driver JDBC, l'url de connexion ainsi qu'un nom
d'utilisateur et un mot de passe permettant de se connecter `a la base de
données. Les connexions peuvent également être
gérées par un serveur d'application. Dans ce cas, il faut
indiquer à Hibernate comment il peut accéder aux connexions
créées par ce serveur (Annuaire JNDI).
( Les Services tiers. Hibernate a besoin de gérer un
ensemble (pool) de connexions à la base de données et un cache de
données. Pour cela, Hibernate propose une implémentation
rudimentaire de ces services mais peut aussi utiliser des services tiers plus
performants.
Pour résumer, le paramétrage de Hibernate
nécessite :
( La définition du modèle de classes exploitant la
base de données ;
1 Une correspondance (mapping) entre le modèle de classes
et la base de données ; 1 Une configuration au niveau système de
l'accès.
c. Utilisation d'Hibernate
L'utilisation de Hibernate se fait principalement au travers de
la classe Session qu'il fournit. Un objet session offre les
fonctionnalités suivantes :
1 Rendre persistant un objet d'une classe. C'est la
méthode save qui offre cette fonctionnalité. Elle prend
en paramètre l'objet a rendre persistant.
( Charger un objet d'une classe à partir de la base de
données. La méthode load est utilisée à
cette fin. Elle prend en paramètre la classe de l'objet a charger ainsi
que la valeur de l'identifiant (clé primaire) de cet objet.
1 Modification d'un objet persistant. Il suffit pour cela de
modifier la valeur des propriétés d'un objet puis d'appeler la
méthode flush de l'objet session.
( Suppression d'un objet persistant. L'appel de la
méthode delete avec en paramètre un objet
persistant se charge d'effectuer la suppression dans la base de
données.
( Rechercher des objets. Hibernate propose un langage de
requête orienté objets nommé HQL dont la syntaxe est
similaire au SQL et qui permet d'effectuer des requêtes sur le
modèle objet.
|