WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Rapport de Projet J2EE: site de e-commerce

( Télécharger le fichier original )
par Olivier Ferran
 - Bac+5 2008
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

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.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Qui vit sans folie n'est pas si sage qu'il croit."   La Rochefoucault