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:bd:tp-orm:2014 [2014/09/22 06:42]
ecoquery [Mise en oeuvre de mappings Objet/Relationnels]
enseignement:tp:bd:tp-orm:2014 [2014/09/22 16:46]
ecoquery [Remarques additionnelles]
Ligne 72: Ligne 72:
  
  
-==== Schema relationnel ====+==== Base de donnée et schema relationnel ====
  
-Le fichier ''orm-2014/initialisation-pg.sql'' du projet embryonnaire permet de mettre en place le schéma relationnel avec quelques données dans la base PostgreSQL((pour les bases postgres des salles TP: login ''etudiant'', mot de passe ''etudiant'')).+=== Installation et démarrage de la base H2 ===
  
-<file sql initialisation-pg.sql>+[[http://h2datadase.com|H2]] est une base de donnée Java qui sera utilisée dans ce TP((Le TP fonctionne aussi sous d'autres SGBD comme PostgreSQL à condition d'adapter le fichier ''persistence.xml''. Il est cependant demandé de le faire fonctionner sur H2 pour faciliter le travail de correction)). Télécharger et décompresser le fichier [[http://liris.cnrs.fr/~ecoquery/files/h2-2014-08-06.zip|h2-2014-08-06.zip]] et lancer la console H2 à l'aide du fichier ''h2.sh'' ou ''h2.bat''. Une page web s'ouvre. Utiliser la configuration ''Generic H2 (Server)''
 +<note important> 
 +Vérifier la configuration: 
 +  * Pilote JDBC: ''org.h2.Driver'' 
 +  * URL JDBC: ''<nowiki>jdbc:h2:tcp://localhost/~/test</nowiki>'' 
 +  * Nom d'utilisateur: ''sa'' 
 +  * Mot de passe: //vide// 
 +</note> 
 +Tester la connexion, puis se connecter. 
 + 
 +=== Mise en place du schéma === 
 + 
 +Le fichier ''orm-2014/initialisation-h2.sql'' du projet embryonnaire permet de mettre en place le schéma relationnel dans la base H2. Utiliser la console H2 dans le navigateur pour mettre en place ce schéma. 
 + 
 +<file sql initialisation-h2.sql>
 create table cinema( create table cinema(
  nom varchar(255) primary key,  nom varchar(255) primary key,
Ligne 135: Ligne 149:
 === Divers === === Divers ===
   * Lorsqu’une entité/classe possède un identifiant portant sur plusieurs attributs, il faut créer une classe spécifique (qui n'est pas une entité) pour regrouper ces champs, et utiliser un champ de cette classe en lieu et place du groupe de champs servant d'identifiants dans votre modèle objet. Voir ''@EmbeddedId'', ''@Embbedable''. Voir également ''@ElementCollection'' si les éléments de la collection ne sont pas des entités.   * Lorsqu’une entité/classe possède un identifiant portant sur plusieurs attributs, il faut créer une classe spécifique (qui n'est pas une entité) pour regrouper ces champs, et utiliser un champ de cette classe en lieu et place du groupe de champs servant d'identifiants dans votre modèle objet. Voir ''@EmbeddedId'', ''@Embbedable''. Voir également ''@ElementCollection'' si les éléments de la collection ne sont pas des entités.
-  * Les annotations @Column, @JoinColumn, @JoinTable sont à utiliser dans le mapping+  * Les annotations ''@Column''''@JoinColumn''''@JoinTable'' sont à utiliser dans le mapping 
 +  * Avec le paramètre ''mappedBy'', il est possible d'utiliser une valeur du type ''maCle.unChamp'' pour indiquer que la relation inverse est référencée à partir d'un champ dans une clé composée (i.e. en présence de ''@Embbedable''/''@EmbbeddedId'').
   * Changer ''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.   * Changer ''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.
   * L'ordre suivant est suggéré dans la mise en place des classes et du mapping:   * L'ordre suivant est suggéré dans la mise en place des classes et du mapping: