Vous êtes sur la page 1sur 6

TP N3 : Hibernate, EMSI

Enseignant : BOUZIDI Issam



1
TP N3 : Les relations : One-to-Many
Objectif
L`objectif de ce TP est d`implmenter le type de relation one to many, avec toutes les
options qui lui sont associes.


Pr-requis :
Eclipse 3.2 ou version ulterieure
Les librairies d`hibernate (Iichiers jar)
JDK 1.5

1) Description

Dans cet exemple nous allons implementer une relation one to many, reIletee par les deux
entites CLIENT et COMMANDE. Un client a plusieurs commandes, et une commande
appartient a un seul client a la Iois.

Pour mapper une relation one-to-many on doit suivre, d`une maniere generale, les operations
suivantes :

1. Creer dans la classe client une collection des commandes.
2. Creer dans la table commande une reIerence vers un objet client.
3. Ajouter une colonne dans la table COMMANDE pour Iaire la relation avec la table
CLIENT via le champ IDENTIFIANT de cette derniere.
4. ModiIier le Iichier de mapping en ajoutant la balise suivante dans le mapping de la
classe Client.
bag name"commandes" ~
key column"CLIENT" /~
one-to-many class"modele.Commande" /~
/bag~

2) Implmentation de la classe et de la table Client


Crer dans le package modele la classe Client, dont les attributs sont :

public class Client {

private long identifiant;
private String nom;
private String prenom;
private Collection commandes;

}

Crer la table CLIENT :

CREATE TABLE CLIENT
(
IDENTIFIANT NUMBER,
TP N3 : Hibernate, EMSI
Enseignant : BOUZIDI Issam

2
NOM VARCHAR2(50 BYTE),
PRENOM VARCHAR2(50 BYTE)
)

3) Implmentation de la classe et de la table Commande

Crer dans le package modele la classe Commande, dont les attributs sont :

public class Commande {

private long identifiant;

private String code;

private String libelle;

private String montant;

private Client client;

Crer la table Commande :

CREATE TABLE COMMANDE
(
IDENTIFIANT NUMBER,
CODE VARCHAR2(50 BYTE),
LIBELLE VARCHAR2(50 BYTE),
MONTANT VARCHAR2(50 BYTE),
CLIENT NUMBER
)

NB : Dans deux classes n`oublier pas les constructeurs par deIaut.

4) Fichier de mapping (des deux classes)

Creer le Iichier de mapping des deux classes

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>


<class name="modele.Commande" table="COMMANDE">
<id name="identifiant" type="long" column="IDENTIFIANT">
<generator class="increment" />
</id>
<property name="code" type="string" column="code" />
<property name="libelle" type="string" column="libelle" />
<property name="montant" type="string" column="montant" />


</class>

<class name="modele.Client" table="CLIENT">
<id name="identifiant" type="long" column="IDENTIFIANT">
TP N3 : Hibernate, EMSI
Enseignant : BOUZIDI Issam

3
<generator class="increment" />
</id>
<property name="nom" type="string" column="NOM" />
<property name="prenom" type="string" column="PRENOM" />


<bag name="commandes" >
<key column="CLIENT" />
<one-to-many class="modele.Commande" />
</bag>
</class>

</hibernate-mapping>

5) Classe de persistance
a) Sauvegarder un client avec ses commandes (sans cascade)


1) VeriIier la creation des deux objets client et commande dans la base de donnees.
TP N3 : Hibernate, EMSI
Enseignant : BOUZIDI Issam

4
2) VeriIier egalement que la colonne qui represente la relation dans la table COMMANDE a
ete bien remplie avec l`identiIiant du CLIENT.

b) Rcuprer un client avec ses commandes


c) Sauvegarder un client avec ses commandes (avec option cascade)

Dans le mapping de la classe Client ajouter l`option cascade dans la balise implementant la
relation 1 to many.

<bag name="commandes" cascade="all">
<key column="CLIENT" />
<one-to-many class="modele.Commande" />
</bag>

Puis implementer le code suivant :

TP N3 : Hibernate, EMSI
Enseignant : BOUZIDI Issam

5



d) Supprimer un client avec ses commandes (avec option cascade)

Avec l`option cascade, la suppression d`un client implique automatiquement la suppression de
ses commande.

TP N3 : Hibernate, EMSI
Enseignant : BOUZIDI Issam

6


VeriIier la suppression du client et de ses commandes.

Vous aimerez peut-être aussi