1 Préparation

publicité
Institut Galilée
Année 2016-2017
Environnement et Langages Evolués
Master 2 EID-PLS
TP 2 : PERSISTANCE DES OBJETS JAVA
Gestion de projets en entreprise
Résumé
L’objectif de ce TP est d’être capable de réaliser une application Java de gestion de projets dans une entreprise
composée de départements situés dans des villes différentes.
Il s’agit d’affecter des projets à des employés, répartis dans des départements.
Voici les classes d’objets utilisés :
— Departement qui représente un département de l’entreprise : dispose d’un identifiant, d’un nom et
d’un lieu.
— Employe qui représente un employé de l’entreprise, et qui hérite de la classe Personne : dispose d’un
identifiant, d’un nom, d’un supérieur.
— Projet qui représente un projet dans lequel des employés peuvent participer : dispose d’un identifiant
et d’un libellé
— Participation qui représente la participation d’un employé à un projet, avec sa fonction.
Règles de gestion :
— Un employé appartient à un département et peut participer à des projets. Il a une fonction (et une
seule) dans chaque projet auquel il participe (par exemple, chef de projet ou trésorier ou simple
membre).
— Plusieurs employés peuvent participer à un même projet.
— Un employé a au plus un supérieur.
— Un employé appartient à au plus un département.
— Les associations entre les employés et les départements et entre les employés et les projets sont
bidirectionnelles.
— L’association entre un employé et son supérieur est unidirectionnelle (d’un employé vers son supérieur,
s’il existe).
Plusieurs technologies vues en cours sont utilisées dans ce TP :
— API JPA
— Persistance
— tests unitaires
— Derby
Dans ce TP, les tables sont créées automatiquement.
1
Préparation
NetBeans contient par défaut la base de données derby. Les tables qu’on y déclare se trouvent sous le répertoire
$HOME/.netbeans-derby.
— L’onglet Services donne sous Databases les bases de données utilisables (Java DB pour derby), les drivers
disponibles, les connecteurs possibles (un connecteur par base de donnée créée). Un tel connecteur permet
d’accéder directement à la base de donnée, de voir les tables et leur contenu, d’effectuer des requêtes SQL soit
par l’interface, soit par exécution de la requête explicite directement.
— L’onglet Services donne sous Servers les serveurs d’application sur lesquels sont déployées les applications
développées sous Netbeans. En l’occurence Glassfish est fourni en standard. BEA WebLogic et Websphere sont
d’autres serveurs d’application. Ces serveurs intègrent aussi un serveur JNDI qui permettra de faire le lien entre
les objets publiés (base de données, servlets, ...).
1. Modélisez le diagramme de classes sur papier
2. Sous Netbeans, créez un premier projet Java contenant un dossier lib. Intégrez la librairie DerbyClient disponible
là : https://lipn.univ-paris13.fr/~fortier/Enseignement/Lee/librairies/
3. Créez une base de donnée pour le projet : sous l’onglet Services, clic droit sur Java DB - Create Database :
— nom : entreprise
— user name : entreprise
— password : mdp
— (port modifiable, 1527 par défaut)
4. Définissez la classe Personne
1
5. Créez une nouvelle unité de persistance en choisissant la librairie de persistance EclipseLink
Déclarez dans le fichier persistence.xml généré le mapping <class>entite.Personne</class>
6. Ajoutez à la classe Personne les annotations nécessaires pour réaliser le mapping avec la base de données. Les
identifiants devront être générés automatiquement.
7. Ecrivez un test d’interrogation de la base pour récupérer les éléments de ’Personne’, puis insérez une nouvelle
personne.
Vérifiez que la table est créée.
8. Ecrivez un test complet CRUD sur une entité Personne.
2
Héritage
1. Créez un nouveau projet en vous basant sur le précédent.
2. Créez la classe Employe (qui hérite de Personne) incluant le supérieur, et transformez-la en entité JPA.
3. Modifiez la classe de persistance pour prendre en compte cette classe.
4. Réalisez un test de lecture d’éléments.
Cela fonctionne-t-il ? Pourquoi ? Analysez la table PERSONNE
5. Modifiez la stratégie de génération de table de l’unité de persistance pour qu’elle soit de type "drop-and-createtables"
6. Réalisez un test de lecture d’éléments.
Cela fonctionne-t-il ? Pourquoi ? Analysez la table PERSONNE
3
Association 1 :N
1. Créez un nouveau projet en vous basant sur le précédent.
2. Créez l’entité JPA Departement, dont les numéros sont générés automatiquement.
3. Modifiez la classe de persistance pour prendre en compte cette classe.
4. Ecrivez les méthodes CRUD de l’entité Departement et réaliser un test complet.
5. Complétez Departement avec une collection d’employés en ajoutant l’annotation 1 :N
6. Complétez Employe avec le supérieur et le département associé en ajoutant l’annotation N :1
7. Ecrivez un scénario de tests pour créer des départements, des employés associés à ces départements (avec éventuellement des chefs)
8. Utilisez une requête nommée pour lister l’ensemble des employés d’un département dans un test unitaire
9. Gérez la suppression d’un département en mode "cascade" pour satisfaire les contraintes d’intégrité
4
Association M :N
1. Créez un nouveau projet en vous basant sur le précédent.
2. Créez les entités JPA Projet et Participation
3. Ajoutez la liste des participations à la classe Employe
4. Modifiez la classe de persistance pour prendre en compte ces classes
5. Assurez-vous de la pertinence des annotations M :N
6. Ecrivez un scenario de tests pour créer des projets associés à des participants
5
Codeurs Pas Peur
Créez une réelle application de gestion des projets à l’aide d’un menu de gestion :
— des départements
— des employés
— des projets
Vous pouvez vous baser sur l’application disponible ici : https://lipn.univ-paris13.fr/~fortier/Enseignement/
Lee/MENU.tar.gz
2
Téléchargement