Les deux révisions précédentes
Révision précédente
Prochaine révision
|
Révision précédente
|
enseignement:tp:sw:donnees:2014 [2014/09/11 14:41] ecoquery [Mise en place] |
enseignement:tp:sw:donnees:2014 [2014/09/23 07:19] (Version actuelle) ecoquery [Travail demandé] |
===== Mise en place ===== | ===== Mise en place ===== |
| |
Télécharger le projet maven suivant: {{:enseignement:tp:sw:donnees:inf2018m-2014-base.zip|}} | Télécharger le projet maven suivant: {{:enseignement:tp:sw:donnees:inf2018m-2014-base.zip|}}. |
| |
Alternativement, il est possible de cloner le dépôt de l'énoncé: https://forge.univ-lyon1.fr/hg/inf2018m-2014-base . | Alternativement, il est possible de cloner le dépôt de l'énoncé: https://forge.univ-lyon1.fr/hg/inf2018m-2014-base . |
Ce projet contient: | Ce projet contient: |
* un fichier ''pom.xml'' préconfiguré avec les dépendances vers junit, hibernate et [[http://www.h2database.com|h2]] pour les tests | * un fichier ''pom.xml'' préconfiguré avec les dépendances vers junit, hibernate et [[http://www.h2database.com|h2]] pour les tests |
* un fichier ''src/main/resources/setup-h2.sql'' qui contient le code SQL pour créer des tables dans postgresql | * un fichier ''src/main/resources/setup-h2.sql'' qui contient le code SQL pour créer des tables dans H2 |
* un script ''build-h2.sh'', dont il faut éventuellement éditer la variable ''H2JAR'' pour initialiser une base H2 dans le répertoire target((je suis preneur d'un éventuel ''.bat'' similaire pôur Windows)) | * un script ''build-h2.sh'', dont il faut éventuellement éditer la variable ''H2JAR'' pour initialiser une base H2 dans le répertoire target((je suis preneur d'un éventuel ''.bat'' similaire pôur Windows)) |
* un fichier XML Schema ''src/main/resources/film.xsd'' | * un fichier XML Schema ''src/main/resources/film.xsd'' |
- Comprendre les schémas SQL et XML | - 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.film.model'' (sauf ''FilmCollection'') de façon à pourvoir utiliser une base H2((typiquement celle créée par le script ''build-h2.sh'' décrit ci-dessus)) comme support de persistance. | - Utiliser JPA (cf TP [[enseignement:tp:bd:tp-orm:2012|Mise en oeuvre de mappings Objet/Relationnels]]) pour annoter les classes du package ''sw.film.model'' (sauf ''FilmCollection'') de façon à pourvoir utiliser une base H2((typiquement celle créée par le script ''build-h2.sh'' décrit ci-dessus)) comme support de persistance. |
- Compléter les classes du package ''sw.film.model.dao'' en utilisant JPA. | - Compléter les classes du package ''sw.film.model.dao.jpa'' en utilisant JPA. |
- Ecrire une classe de test unitaire pour vérifier le bon fonctionnement du mapping JPA. | - Ecrire une classe de test unitaire pour vérifier le bon fonctionnement du mapping JPA. |
- Annoter les classes du package ''sw.film.model'' (y compris FilmCollection) 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.** | - Annoter les classes du package ''sw.film.model'' (y compris FilmCollection) 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, y compris le respect du schéma XSD. | - Ecrire une((au moins)) classe de test unitaire pour vérifier le bon fonctionnement de la (dé)sérialisation avec JAXB, y compris le respect du schéma XSD. |
<note warning>Attention, il est interdit de modifier les interfaces du package ''sw.film.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>Attention, il est interdit de modifier les interfaces du package ''sw.film.model.dao'' 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. Il est interdit de changer la signature des méthodes publiques des classes fournies.</note> |
<note warning>De même, il est interdit de changer le schéma de la BDD ou le schéma XML</note> | <note warning>De même, il est interdit de changer le schéma de la BDD ou le schéma XML.</note> |
| |
===== Ressources ===== | ===== Ressources ===== |
* [[http://download.oracle.com/javase/6/docs/api/|API Java 6]] -> package javax.xml.bind et sous-packages | * [[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'': | Fichier ''persistence.xml'' placé dans ''src/test/resources/META-INF'': |
<file xml persistence.xml> | <file xml persistence.xml> |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> |
<persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> | <persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> |
<provider>org.hibernate.ejb.HibernatePersistence</provider> | <provider>org.hibernate.ejb.HibernatePersistence</provider> |
<class>...</class> | <class>...</class> <!-- compléter ici avec les classes du mapping OR --> |
<properties> | <properties> |
<property name="hibernate.connection.driver_class" value="org.h2.Driver"/> | <property name="hibernate.connection.driver_class" value="org.h2.Driver"/> |