Table des matières

TP1 - ORM

L'objectif de ce TP est de ce familiariser avec les technologies de mapping objet-relationnel au travers de l'API JPA de Java. Pour cela il est demandé de compléter le code de l'application fournie afin de la rendre fonctionnelle.

Le TP peut être réalisé seul ou en binôme.

<note>Les instructions pour ce TP ont été testées sous Linux et MacOSX. Le TP doit fonctionner à priori sans problème sous Windows, mais cela n'a pas été testé.</note>

<note warning>Problèmes de quota disque liés à maven: changer la configuration comme indiqué ici</note>

<note warning>Problèmes d'entrées/sortie sur H2: changer l'url H2 en jdbc:h2:tcp://localhost//tmp/gdw-db dans l'interface de connexion à H2 et dans le fichier src/main/resources/META-INF/persistence.xml1)</note>

<note important>Ce TP n'est pas à rendre, mais un contrôle portant sur le TP est prévu le jeudi 5 octobre après-midi en alternance avec le TD de Bases de l'IA.</note>

Mise en route

Créer un projet sur la forge et partagez le avec votre binôme. Cloner votre projet (on supposera que l'identifiant du projet est pxxxx/gdw-tp1):

git clone https://forge.univ-lyon1.fr/pxxxx/gdw-tp1.git

Tirer ensuite le contenu de l'application depuis le dépôt de l'énoncé, puis pousser le tout vers votre dépôt sur la forge.

cd gdw-tp1
git pull https://forge.univ-lyon1.fr/EMMANUEL.COQUERY/inf1090m-2016-tp1.git
git push

Charger le projet dans votre IDE favori.

Mise en place de la base de données

La base de données relationnelle utilisée dans ce TP est H2. Télécharger la base de données, puis lancer la console:

cd ..../h2/bin
./h2.sh -web -webAllowOthers -tcp -tcpAllowOthers -browser

Vérifier les paramètres dans la page web qui s'ouvre (enregistrer la connexion pour plus tard au cas où):

Utiliser le script SQL src/main/resources/microblog.sql pour générer les tables de la base de données.

Laisser la base de données démarrée.

Vérifier la connexion entre Java et la base H2 en lançant le test unitaire JPATest.

Tour d'horizon de l'application "microblog"

Pour lancer l'application, deux possibilités:

L'application lance une interface dans un navigateur. Cette interface n'est pour le moment pas réellement fonctionnelle, c'est à vous de prendre la main pour la compléter.

Le code comporte 3 packages d'intérêt:

Par ailleurs, le package itf contient le code qui gère l'interface Web. Il n'est à priori pas nécessaire de comprendre en profondeur ce code.

Travail demandé

  1. Comprendre le schéma relationnel en particulier les clés utilisées
  2. Annoter les classes du package modele avec JPA, en procédant par exemple comme suit:
    • Compléter et annoter la classe User
    • Compléter et annoter la classe Categorie sauf ce qui concerne la collection des billets. Attention à la gestion de la clé primaire.
    • Compléter et annoter la classe Billet en faisant attention aux clés primaires et étrangères définies sur la table BILLET
    • Terminer de compléter et d'annoter la classe Categorie
  3. Compléter le code des classes DAO. S'il est nécessaire de créer des requêtes dans le langage JPA (JPQL), ces requêtes pourront être définies dans les classes entités correspondantes via l'annotation @NamedQueries.
  4. Ecrire des tests unitaires pour les différents DAO.
  5. Vérifier le bon fonctionnement de l'application.

Remarque: Le test unitaire JPATest permet de vérifier que le mapping défini par les annotation est cohérent avec le schéma de la base H2.

Contraintes

Les modifications apportées au projet doivent respecter les contraintes suivantes:

Indications

Liens utiles

Remarques sur les annotations

1)
Editer ce fichier en texte, pas avec l'éditeur “formulaire” de Netbeans/Eclipse