TP JPA/JAXB

Rendu

Le TP est à rendre pour le 24/09/2015. Saisir l'identifiant du projet forge (pas l'url, seulement la fin, par exemple p23456789-tiw5-tp1) dans la case “TIW5 TP1” de votre page tomuss.

Objectifs

L'objectif est de réviser / de prendre en main les APIs de persistance standard Java des objets vers le relationnel (JPA) et vers XML (JAXB).

Mise en place

Créer un projet forge pour ce TP, le cloner puis faire un pull sur le dépôt suivant: https://forge.univ-lyon1.fr/hg/inf2018m-2015-base

Explorer le projet, en comprendre la structure et réfléchir aux rôles des deux fichiers pom.xml.

Pour être à l'aise dans ce TP il peut être utile de se familiariser avec la base de données java H2 (tutoriel).

Travail demandé

  1. Comprendre le schéma XML et l'exemple de fichier carte1.xml.
  2. Utiliser JPA pour annoter les classes du package tiw5.restaurants.modele Plat et Menu. Penser que le contenu du fichier carte1.xml devra à terme pouvoir être insérer en base.
  3. Compléter la classe CarteORMDAO de manière appropriée
  4. Faire des tests unitaires:
    1. Créer un test unitaire utilisant l'unité de persitance test-pu définie dans le fichier de configuration persistence.xml. Ce test devra vérifier que la mise ne place des mappings ne provoque pas d'erreur.
    2. Créer, dans le même fichier persistence.xml, une deuxième unité de persistance sur le modèle de la première, mais en changeant l'URL JDBC de façon à utiliser une base H2 que vous aurez démarrée depuis la console H2 (utiliser une URL TCP dans la console H2 pour démarrer un serveur à la volée). Réfléchir à une bonne valeur pour hibernate.hbm2ddl.auto.
    3. Changer l'unité de persistance du test unitaire et vérifiez dans la console H2 que le schéma est conforme à vos attentes.
    4. Ajouter des tests unitaires pour vérifier le bon fonctionnement de votre DAO. Vérifier les données insérées/supprimées avec la console H2.
    5. Repasser l'unité de persitance de vos tests sur test-pu
    6. Changez vos tests pour utiliser JDBC afin de vérifier le comportement du DAO vis-à-vis des ajouts/suppressions/modifications de données.
  5. Annoter les classes Carte, Menu et Plat avec JAXB de façon les faires correspondre au schéma XML.
  6. Compléter la classe CarteJAXBDAO.
  7. Faire des tests unitaires:
    1. Créer un test unitaire vérifiant la bonne mise en place des annotation JAXB en sérialisant un plat, un menu et une carte.
    2. Ecrire des tests unitaires vérifiant le bon fonctionnement du DAO XML. Essayer de trouver un moyen de faire qui évite de créer des fichiers sur disque.
      • Parmi les tests effectués, au moins un test devra vérifier la validité du XML produit par le DAO vis-à-vis du schéma XSD fourni
  8. Compléter la classe ImportExport afin de pouvoir importer et exporter le contenu de la base relationnelle depuis/vers un document XML. Ecrire des tests unitaire pour en vérifier le bon fonctionnement.

<note warning>Il est interdit de supprimer ou de modifier la signature des méthodes publiques des classes fournies. Il est par contre possible d'ajouter des nouvelles méthodes publiques à ces classes.</note>

Ressources

Quelques liens utiles: