Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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]
Ligne 1: Ligne 1:
-====== 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>