Ceci est une ancienne révision du document !
target
. Bien penser à remplir le fichier etudiants.txt
. Il est possible d'ajouter dans ce fichier tout commentaire à destination du correcteur.etudiants.txt
si le TP a été réalisé avec PostgreSQL ou bien avec Oracle.L'objectif de ce TP est de mettre en place un mapping Objet/Relationnel via l'API JPA.
Quelques liens:
javax.persistence
On considère le schéma relationnel fourni dans un des fichiers suivants (selon le SGBD choisi): schema PostgreSQL, schema Oracle
Utiliser le script choisi pour créer les tables:
mon_repertoire
par le répertoire où se trouve le fichier ojdbc6.jar
:mvn install:install-file -Dfile=mon_repertoire/ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc -Dversion=6 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true
Maven est un utilitaire de compilation/exécution/test de projet Java qui sera utilisé dans le cadre des TP de l'UE. Configurer Maven comme indiqué dans l'aide.
Télécharger et décompresser le projet de base: bdav-tp-orm-base.zip, ou mieux, cloner le dépôt créé mardi matin.
hg clone https://forge.univ-lyon1.fr/hg/mif18-tp-base
Un projet Maven possède deux répertoires de sources: src/main et src/test. Le premier contient les classes “métier” alors que le second ne contient que le code de test.
Dans Eclipse, il faut importer le projet en utilisant Import existing maven project
.
Le fichier pom.xml
contient les dépendances sur les bibliothèques nécessaires au TP.
Le fichier src/main/resources/META-INF/persistence.xml
contient les informations pour mettre en place le cadre de persistence:
<?xml version="1.0" encoding="UTF-8"?> <persistence 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" version="1.0"> <persistence-unit name="pu" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> <property name="hibernate.hbm2ddl.auto" value="validate"/> <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/> <property name="hibernate.connection.username" value="etudiant"/> <property name="hibernate.connection.password" value="etudiant"/> <property name="hibernate.connection.url" value="jdbc:postgresql:postgres"/> </properties> </persistence-unit> </persistence>
Si la connection de fonctionne pas, changer mdpetu
en etudiant
.
javax.persistence
, afin d'établir les liens entre le modèle relationnel et votre modèle objet. Le mapping relationnel objet peut être tester à travers le TestCase JUnit suivant:
package bdav.tporm; import javax.persistence.EntityManager; import javax.persistence.Persistence; import junit.framework.TestCase; public class ConfigurationTest extends TestCase { public void testEntityManager() { EntityManager em = Persistence.createEntityManagerFactory("pu").createEntityManager(); em.getTransaction().begin(); em.getTransaction().commit(); em.close(); } }
Cette classe est à placer dans le répertoire src/test/java/bdav/tporm
. Elle est exécutable directement comme test JUnit dans Eclipse ou Netbeans.
@Id
, @IdClass
.@Embedded
et @Embeddable
.hibernate.hbm2ddl.auto
de validate
à update
permet au framework de modifier le schéma relationnel. Cela peut être utile pour comprendre à quoi correspond le mapping en cours de développement, mais cela écrase le schéma de l'énoncé. A la fin du TP, le mapping doit fonctionner avec le schéma de fourni plus haut. En cas d'impossibilité, justifier les différences dans des commentaires appropriés dans les classes Java.