TP1 2011 EJB 3.1/JPA/JSF2

De $1

Version de 18:22, 13 Mai 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Introduction

Ce TP est un premier jet pour une prise contacte directe et violente avec les technologies précitées. Les cours et TPs suivants expliqueront le détail de ce que vous allez mettre en oeuvre aujourd'hui. Il s'agit d'une adaptation plus ou moins fidèle de l'article paru sur le site developer Zone : http://netbeans.dzone.com/articles/d...-ee-6-app-jsf2

Voici l'architecture de l'application que vous allez développer :

2-1-Architecture.gif

Logiciels utilisés

Nous allons travailler avec la version 7.0.1 de netbeans, la version la plus complète (colonne de droite de : http://netbeans.org/downloads), qui vient avec le serveur Java EE6 Glassfish V 3.1.1. Veillez à avoir un JDK récent installé sur votre machine (JDK6 update 22 ou supérieur). Nous utiliserons également à la fin de ce TP quelques composants JSF2 provenant du site http://www.primefaces.org/

Création d'un projet de type Entreprise Application

L'année dernière nous avions travaillé avec des projets de type "Web" qui incluaient tout dans un seul fichier .war, cette année nous allons aussi voir que l'on peut développer des applications de type "entreprise" qui font une séparation très nette entre les parties "web" et les parties métier/accès aux données d'une application.

Pour créer un projet "entreprise" utilisez le menu File/New Project puis choisissez la catégorie Java EE, et un projet de type "Enterprise Application".

Snap1.jpg

Liquez ensuite sur le bouton "Next" puis choisissez l'emplacement du projet et son nom. Attention, pas de caractères bizarres dans le chemin ni le nom s'il vous plait, pas de "_" par exemple, pas d'accents, etc. Ceci pour éviter les mauvaises surprises qui peuvent arriver par la suite (hibernate n'aime pas les noms de chemins bizarres, toplink n'aime pas les "_" dans les noms de projets, etc...)

J'ai choisi comme nom de projet TP1CustomerApplication (comme vous voyez : pas d'espace ou de caractère bizarre dans le nom) et j'ai conservé l'endroit où Netbeans place les projets par défaut (là aussi, je préfère un nom de chemin sans espaces...)

Snap2.jpg

Dans la fenêtre suivante, on indique le nom du serveur et la version de java EE que l'on souhaite pour le projet. Prenez les valeurs par défaut, si elles sont différentes de celles ci-dessous, assurez-vous que cela correspond bien à la dernière version de glassfish et à la version 6 de java EE (qui est celle étudiée en cours).

 Snap3.jpg

Cliquez ensuite sur le bouton "finish", normalement netbeans génère un projet pour votre application. En réalité, une application "enteprise" se compose de trois projets :

  1. un projet précédé par un triangle bleu qui est en fait celui qui réunit les deux autres projets au sein d'un même fichier .ear (enterprise archive), équivalent du .war mais pour les applications enteprises,
  2. Un projet précédé par un grain de café, c'est le projet "métier" qui va contenir la partie métier de l'application ainsi que la partie accès aux données, il est précédé d'un grain de café (un "bean") car il contiendra certainement des "beans", des "composants java" de type "managed beans" "enterprise java beans (EJBs)" ou "entities".
  3. Un projet précédé par une icône en forme de globe terrestre, c'est le projet "web" qui va contenir le front-end web de l'application : les jsps, servlets, pages jsf ou html, les web services, etc.

Snap4.jpg

Créations de classes entités à partir d'une base de données existante

Dans ce projet nous allons utiliser une base de données. Comme nous l'avons vu en cours, on ne manipulera pas des données directement en SQL mais sous forme d'objets particuliers qu'on appelle des "classes entités". Généralement une classe entité correspond à une table, porte le même nom (aux majuscules/minuscules près), et ses attributs correspondent aux colonnes de la table. Les instances de cette classe entité seront des objets correspondant à des lignes dans cette table.

Dans un premier temps nous allons utiliser un wizard de netbeans pour générer une classe entité à partir d'une table.

On va ajouter la classe entité dans le projet "EJBs", celui précédé d'un grain de café. Faire clic droit puis New/Entity Class from Database :

Snap5.jpg

Une fenêtre apparait dans laquelle vous allez indiquer la source de données (le "nom" de la base de données sur laquelle vous allez travailler. Par défaut le jdk vient avec un SGBD qui s'appelle JavaDB (ou "Derby") qui contient une base "sample" dont le nom est "jdbc/sample". Elle contient quelques tables correspondant à un magasin de produits informatiques. Choisissez donc jdbc/sample dans la liste des sources de données :

Snap7.jpg

Normalement dès que vous avez choisi le nom de la base, les tables s'affichent dans la colonne de gauche. Choisissez "CUSTOMER" et cliquez sur le bouton "add", cela va ajouter en fait deux tables : la table CUSTOMER mais aussi la table DISCOUNT_CODE car il existe une jointure entre ces deux tables :

Snap8.jpg

Cliquez sur le bouton "Next". Maintenant on va vous proposer de changer le nom des classes entités correspondants à chacune des tables. Je conseille de laisser tout par défaut, cependant je conseille aussi de faire générer ces classes dans un package "entities" pour mieux structurer le projet :

Snap9.jpg

Cliquez sur le bouton "Next". Le projet n'ayant pas encore de "Persistence Unit" (nous verrons en détails de quoi il s'agit), l'étape suivante consiste