Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
enseignement:tp:sw:donnees:2013 [2013/09/11 08:24]
ecoquery
enseignement:tp:sw:donnees:2013 [2013/09/12 07:08] (Version actuelle)
ecoquery [Mise en place]
Ligne 3: Ligne 3:
 Année 2013-2014 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 ===== ===== Binômes / Trinômes =====
  
Ligne 10: Ligne 11:
   * tout trinôme doit contenir au moins un étudiant n'ayant pas 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.   * 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 ===== ===== Mise en place =====
  
-Télécharger le projet maven suivant: **A compléter**+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: Ce projet contient:
Ligne 20: Ligne 27:
   * un fichier XML Schema ''src/main/resources/wine.xsd''   * 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 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.model.itf''+  * des interfaces dans les packages ''sw.wine.itf''
  
 Utiliser le script SQL pour initialiser la base de données PostgreSQL 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> <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 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)+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é =====
-===== Travail demande =====+
  
   - Comprendre les schémas SQL et XML   - Comprendre les schémas SQL et XML
-  - Utiliser JPA (cf TP ** A completer**) pour annoter les classes du package ''sw.wine.model''<note warning>Attention, il est interdit de modifier les interfaces du package ''sw.wine.itf'' et les classes qui implementent des interafaces de ce package doivent continuer à le faire.</note> +  - 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>