TP4 EJB 2011-2012 : ajout de relations au TP3

De $1

Version de 15:52, 19 Avr 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Introduction

Dans ce TP nous allons manipuler les relations. Nous continuons le TP sur les comptes bancaires. Nous allons associer à chaque compte bancaire un historique  : une liste d'opérations bancaires, sous la forme d'une relation 1-N. Un compte bancaire aura n opérations reliées.

Par exemple :

afficheDetails.jpg

Creation d'un entity bean OperationBancaire

Première étape : ajouter au projet un entity bean correspondant à une operation bancaire. Il aura comme attributs

  • un id (sa clé primaire),
  • une description (par exemple "création du compte", "débit", "crédit"...),
  • la date de l'opération (de type java.util.date), et
  • le montant impliqué (positif pour un crédit, négatif pour un débit, le solde initial pour une création).

Ne copiez/collez pas ce code intégralement, ommetez l'attribut de type Date, celui-là vous le saisirez à la main : lorsque vous taperez l'attribut de type Date (on vous proposera d'importer java.util.Date), automatiquement, une annotation de code @temporal apparaitra. Oui, les dates sont bien des types spéciaux !

/div[2]/pre, line 2, column 1: EOF expected


Ajout de la relation dans l'entity bean CompteBancaire

Il suffit de taper la ligne correspondant à l'attribut "liste d'opérations bancaires" dans le bean CompteBancaire pour qu'une ampoule jaune vous propose d'insérer une annotation correspondant à une relation @OneToMany.

Ne copiez/collez pas le code, tapez le !

Vous compléterez l'annotation avec les attributs concernant le cascading et le chargement :

  • CascadeType.ALL signifie que si on persiste un compte on persiste aussi l'historique, idem pour une suppression.
  • L'attribut FetchType indique que lorsqu'on fait un select sur un compte, on charge aussi son historique.
  • La relation ici est uni-directionnelle.
/div[3]/pre, line 2, column 1: EOF expected

Detruisez les tables existantes, puisque le modèle de données va changer !

Pour la suite, détruisez les tables COMPTES_BANCAIRES, etc de votre projet.

Il y a un ordre pour les détruire... Note : si vous êtes en drop and create dans votre persistence.xml ce n'est pas la peine de les détruire à la main. Il devrait suffire de redéployer le projet.

Vous pouvez deployer le projet et regarder les tables générées qui devraient ressembler à ceci :

tablesRelatons.jpg

Modifiez le session bean GestionCompteBancaires

Associer une operation à chaque modification d'un compte

...pour qu'il associe une operation bancaire chaque fois qu'un compte est modifié. Voici un exemple dans la méthode de création de compte :

/div[5]/div/pre, line 1, column 8: EOF expected

A vous de modifier la méthode qui permet de transférer de l'argent. (attention, pas de persist !!!!! Il suffit d'ajouter une opération, cela mettra à jour automatiquement la relation).

Ajouter une méthode qui permette de chercher un compte

/div[5]/div[2]/pre, line 1, column 8: EOF expected

Pensez à l'exposer dans l'interface !

Modifiez la page JSF qui affiche la liste des comptes

Objectif : Pour que chaque compte dans la liste ou dans le tableau propose un lien qui appelle la servlet de contrôle avec une action indiquant que l'on désire afficher l'historique du compte
(en cliquant sur le lien "Détails", cela  appelle une méthode d'un backing bean qui renvoie vers la page JSF d'affichage des détails de l'historique).

details.jpg

Lorsqu'on clique sur un de ces liens, cela appelle la méthode showDetail du backing bean. Regardez comment on avait fait dans le TP1.

Ecriture d'une JSF pour l'affichage de l'historique d'un compte

Il reste maitenant à écrire la page JSF qui va se charger d'afficher les détails du compte.

afficheDetails.jpg 

Modalités de rendu de ce TP

  • A faire en binome, ou seul,
  • Rendre un zip portant TP3_NTDP_2011-2012-binome1-binome2.zip
  • Dans le zip : le répertoire du projet, une petite doc explicative avec points forts, points faibles, des screnshots. Tout ce que vous avez utilisé et qui n'a pas été expliqué en cours devra faire l'objet d'explications dans le readme.
  • Vous nous remettrez sur clé USB les TPs le jour de la démo (on passera dans les rangs).
  • Date de rendu le 20/10 pendant la séance de TP. Aucun retard toléré. Projet non rendu à l'heure = zéro à la note de TP.
  • Vous avez le droit de copier sur le voisin si vous êtes perdus, vous avez le droit de copier du code pris sur le net, A CONDITION DE BIEN INDIQUER LES SOURCES et d'avoir fait l'effort de comprendre ce que vous avez ré-utilisé.

Notes et archives des TPs rendus M2 Miage NTDP 2011-2012

  • A venir