Prochaine révision
|
Révision précédente
|
enseignement:tp:sw:donnees:2013 [2013/09/10 14:23] ecoquery créée |
enseignement:tp:sw:donnees:2013 [2013/09/12 07:08] (Version actuelle) ecoquery [Mise en place] |
====== TIW5 TP Modèle de données 2013 ====== | ====== TIW5 TP Modèle de données ====== |
| |
| Année 2013-2014 |
| |
| Sources des données: [[http://www.freebase.com|Freebase]] (cf le type [[http://www.freebase.com/wine/wine?schema=|Wine]]). |
| ===== Binômes / Trinômes ===== |
| |
| Les binômes / trinômes pour ce TP sont à constituer de la manière suivante: |
| * maximum 2 étudiant(e)s ayant fait le M1 au département l'an dernier; |
| * minimum 1 étuduant(e) ayant fait le M1 au département l'an dernier; |
| * tout trinôme doit contenir au moins un étudiant n'ayant pas fait le M1 au département l'an dernier; |
| * les binômes/trinômes sont à choisir dans la mesure du possible au sein des groupes TI5. |
| |
| ===== Rendu ===== |
| |
| Le TP est à rendre pour 18/09/2013, 23h59. Sauf contre-ordre, envoyer une archive zip par mail à [[emmanuel.coquery@univ-lyon1.fr?subject=[Rendu TP1 TIW5]|Emmanuel Coquery]] contenant: le projet maven **sans le répertoire target**((toute archive supérieure à 500Ko pourra être considérée comme non rendue)), ainsi qu'un fichier README.txt contenant les noms et numéros des étudiants du groupe (binôme ou trinôme) ainsi que tout commentaire à destination du correcteur du TP. |
| |
| ===== Mise en place ===== |
| |
| Télécharger le projet maven suivant: {{:enseignement:tp:sw:donnees:inf2018m-2013-base.zip|}} |
| |
| Alternativement, il est possible de cloner le dépôt de l'énoncé: https://forge.univ-lyon1.fr/hg/inf2018m-2013-base . |
| |
| Ce projet contient: |
| * un fichier ''pom.xml'' préconfiguré avec les dépendances vers junit, hibernate et postgresql pour les tests |
| * un fichier ''src/main/resources/setup-pg.sql'' qui contient le code SQL pour créer des tables dans postgresql |
| * un fichier XML Schema ''src/main/resources/wine.xsd'' |
| * des classes dans les packages ''sw.wine.model'' et ''sw.wine.model.dao'' situés dans ''src/main/java'' |
| * des interfaces dans les packages ''sw.wine.itf'' |
| |
| Utiliser le script SQL pour initialiser la base de données PostgreSQL |
| <note tip>Une base PostgreSQL est disponible sur chaque machine de TP windows, login etudiant, mot de passe etudiant, utiliser le schema public de la base postgres</note> |
| |
| Le zip est une archive d'un dépôt Mercurial. Créer un projet sur la [[http://forge.univ-lyon1.fr|forge]] que vous utiliserez pour versionner votre TP. Pousser le dépôt local ((i.e. le projet maven)) vers votre projet forge. N'oubliez pas de partager votre projet avec votre binôme (vos trinômes) |
| |
| ===== Travail demandé ===== |
| |
| - Comprendre les schémas SQL et XML |
| - Utiliser JPA (cf TP [[enseignement:tp:bd:tp-orm:2012|Mise en oeuvre de mappings Objet/Relationnels]]) pour annoter les classes du package ''sw.wine.model'' (sauf ''WineCollection'') de façon à pourvoir utiliser la base PostgreSQL comme support de persistance. |
| - Compléter les classes du package ''sw.wine.model.dao'' en utilisant JPA. |
| - Ecrire une classe de test unitaire pour vérifier le bon fonctionnement du mapping JPA. |
| - Annoter les classes du package ''sw.wine.model'' (y compris WineCollection) avec JAXB pour pouvoir (dé)sérialiser des objets de ces classes au format XML. Le format XML produit/lu devra être valide vis-à-vis du schéma XSD fourni. |
| - Ecrire une classe de test unitaire pour vérifier le bon fonctionnement de la (dé)sérialisation avec JAXB. |
| <note warning>Attention, il est interdit de modifier les interfaces du package ''sw.wine.itf'' et les classes qui implémentent des interfaces de ce package doivent continuer à le faire. Vous pouvez par contre ajouter à loisir des méthodes publiques supplémentaires dans les classes d'implémentation.</note> |
| <note warning>De même, il est interdit de changer le schéma de la BDD ou le schéma XML</note> |
| |
| ===== Ressources ===== |
| |
| |
| Quelques liens utiles: |
| * Le {{:enseignement:bdav:bdav-orms.pdf|cours sur les ORM}}, et le [[enseignement:tp:bd:tp-orm|TP associé]]. |
| * Le [[http://java.sun.com/javaee/6/docs/tutorial/doc/bnbpy.html|tutoriel JEE sur la persistance]]. |
| * L'[[http://download.oracle.com/javaee/6/api/|API JEE]] -> package javax.persistence. |
| * [[:enseignement:aide:apis#junit|Mini-intro JUnit]] |
| * [[http://jaxb.java.net/tutorial/|Tutoriel JAXB]] |
| * [[http://download.oracle.com/javase/6/docs/api/|API Java 6]] -> package javax.xml.bind et sous-packages |
| |
| Fichier ''persistence.xml'' à placer dans ''src/test/resources/META-INF'': |
| <file xml persistence.xml> |
| <?xml version="1.0" encoding="UTF-8"?> |
| <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> |
| <persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> |
| <provider>org.hibernate.ejb.HibernatePersistence</provider> |
| <class>sw.wine.model.Location</class> |
| <class>sw.wine.model.Bottle</class> |
| <class>sw.wine.model.VarietyComposition</class> |
| <class>sw.wine.model.Wine</class> |
| <properties> |
| <property name="hibernate.connection.username" value="etudiant"/> |
| <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/> |
| <property name="hibernate.connection.password" value="etudiant"/> |
| <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/postgres"/> |
| <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/> |
| <property name="hibernate.hbm2ddl.auto" value="validate"/> |
| </properties> |
| </persistence-unit> |
| </persistence> |
| </file> |
| <note warning>Attention, le ''hibernate.hbm2ddl.auto'' doit bien être à ''validate'' sous peine de modifier le schema de la BDD.</note> |