0% ont trouvé ce document utile (0 vote)
469 vues17 pages

TP2 Hibernate: Configuration et Mapping

Transféré par

Khalil Ahmadi
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
469 vues17 pages

TP2 Hibernate: Configuration et Mapping

Transféré par

Khalil Ahmadi
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

TP2(Hibernate)

1) Mise en place d’hibernate :

On utilise pur ce TP « [Link] », on commence donc à extraire le


fichier « [Link] » :

Maintenant nous allons créer sous éclipse un nouveau projet java qui va traiter nos objets métiers et
stocker leurs données relatives dans notre base de données.

1) Création du nouveau projet :


Lancer eclipse.

File->New->Project
Java->JavaProject

Puis « Next », l’assistant vous demandera le nom du projet : « PremierHibernate»


Cliquer sur « Finish ».
Vous verrez alors le nouveau projet au niveau du Package explorer (à gauche).
Clique droit sur le repertoir SRC du projet, puis New->package.
Nom du package : « [Link] »

1
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

2) Mise en place d’une librairie utilisateur : Hibernate :

Window->Preferences, une fenêtre s’affiche:

Java->BuildPath-> User
Libraries puis appuiez sur
“New”.
Nom : Hibernate puis OK.
La nouvelle librairie
s’affiche.
Choisissez « Add Jars »

Parcourir le repertoire ou vous avez extrait hibernate jusqu'à trouver le fichier : [Link].

Puis «Load ». Idem pour les fichiers qui se trouve sous le repertoire « \lib\required »

Enfin « OK ».

2
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

3) Relier le Projet à la librairie :


Choisir la racine du projet->properties->Java BuildPath
L’onglet « Libraries » puis « Add Library ».

Choisissez « User Library » puis, « Next »une liste des librairies s’affiche ,choisissez les
librairie Mysql (voir TP1) et hibernate, puis« Finish »

4) Création du fichier de configuration :

Cliquer sur le projet «PremierHibernate » puis clique droit  new  Source Folder

Nom du répertoire : META-INF puis ok.

Clique droit sur META-INF puis newotherXMLXML.

Nom du Fichier : [Link]

3
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

Voici son contenu (On suppose que vous avez déjà créé une base de données qui se nomme
« hibernate » avec un utilisateur et un mot de passe (voir TP1)) :

<?xml version='1.0' encoding='UTF-8'?>


<!DOCTYPE hibernate-configuration PUBLIC "-
//Hibernate/Hibernate Configuration DTD 3.0//EN"
"[Link]
[Link]">
<hibernate-configuration>
<session-factory>

<property
name="[Link]">jdbc:mysql://localhost/hibernate</proper
ty>
<property name="[Link]">esprituser</property>
<property name="[Link]">espritpwd</property>

<property
name="connection.driver_class">[Link]</property
>

<property
name="dialect">[Link]</property>

<property name="[Link]">update</property>

<property
name="transaction.factory_class">[Link]
CTransactionFactory</property>
<!-- thread is the short name for
[Link]
and let Hibernate bind the session automatically to the
thread
-->

<property
name="current_session_context_class">thread</property>

<!-- this will show us all sql statements -->


<property name="hibernate.show_sql">true</property>

<!-- mapping files -->

</session-factory>
</hibernate-configuration>

4
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

Maintenant creer un nouveau fichier qui se nomme « [Link] » :

Projet : clique droitnewotherGeneralfile

### direct log messages to stdout ###

[Link]=[Link]
[Link]=[Link]
[Link]=[Link]
[Link]=%d{ABSOLUTE} %5p %c{1}:%L -
%m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

[Link]=debug, stdout

[Link]=info
#[Link]=debug

### log HQL query parser activity


#[Link]=debug

### log just the SQL


[Link]=debug

### log JDBC bind parameters ###


[Link]=info

### log schema export/update ###


[Link].hbm2ddl=info

### log HQL parse trees


#[Link]=debug

### log cache activity ###


[Link]=info

### log transaction activity


#[Link]=debug

### log JDBC resource acquisition


#[Link]=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#[Link]=trac
e

5
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

1) Les classes persistantes :

* 1 1 *
Enseignant Ecole Evénement
*
*
*
*
*
Fournisseur Etudiant
Actionnaire

-Ajouter les classes suivantes dans le sous package: « persistance » :

class Ecole

package [Link];

import [Link];

public class Ecole {

private int num;


private String nom;
private String address;
private int nombreSalles;
private List<Enseignant> enseignants;
private List<Etudiant> etudiants;
private List<Fournisseur> fournisseurs;
private List<Actionnaire> actionnaires;

public String getNom() {return nom;}

public void setNom(String nom) { [Link] = nom;}

public String getAdresse() {return address;}

public void setAdresse (String address) {[Link] =


address;}

public int getNombreSalles() {return nombreSalles;}

public void setNombreSalles(int nombreSalles)


{[Link] = nombreSalles;}

public void setNum(int num) {[Link] = num;}

6
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

public int getNum() {return num;}

public String toString(){


return ("-------------------------------\n" +
"Nom: "+nom+"\n Adresse: "+address+
"\n Nombre de salles:"+nombreSalles);}
public void setEnseignants(List<Enseignant> enseignants) {
[Link] = enseignants;
}
public List<Enseignant> getEnseignants() {
return enseignants;
}
public void setEtudiants(List<Etudiant> etudiants) {
[Link] = etudiants;
}
public List<Etudiant> getEtudiants() {
return etudiants;
}
public void setFournisseurs(List<Fournisseur> fournisseurs) {
[Link] = fournisseurs;
}
public List<Fournisseur> getFournisseurs() {
return fournisseurs;
}
public void setActionnaires(List<Actionnaire> actionnaires) {
[Link] = actionnaires;
}
public List<Actionnaire> getActionnaires() {
return actionnaires;
}
}

package [Link];
import [Link];

public class Actionnaire {

private int id;


private String nom;
private List<Ecole> ecoles;
public int getId() { return id;}
public void setId(int id) {[Link] = id;}
public String getNom() {return nom;}
public void setNom(String nom) {[Link] = nom;}
public List<Ecole> getEcoles() {return ecoles;}
public void setEcoles(List<Ecole> ecoles) {[Link] =
ecoles;}

}
package [Link];
7
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

public class Enseignant {

private String ncin;


private String nom;
public String getNcin() {
return ncin;
}
public void setNcin(String ncin) {
[Link] = ncin;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
[Link] = nom;
}

package [Link];

public class Etudiant {

private Ecole ecole;


private int id;
private String nom;

public void setEcole(Ecole ecole) {[Link] =


ecole;}
public Ecole getEcole() { return ecole;}
public void setId(int id) {[Link] = id;}
public int getId() {return id;}
public void setNom(String nom) {[Link] = nom;}
public String getNom() {return nom;}

8
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

package [Link];

import [Link];

public class Evennement {


private Ecole ecole;
private int id;
private String titre;
private Date date;

public int getId() {return id;}

public void setId(int id) { [Link] = id;}

public String getTitre() { return titre;}

public void setTitre(String titre) {[Link] =


titre;}

public Date getDate() {return date;}

public void setDate(Date date) { [Link] = date;}

public void setEcole(Ecole ecole) { [Link] =


ecole;}

public Ecole getEcole() { return ecole;}

package [Link];

public class Fournisseur {

private String nom;


public void setNom(String nom) {[Link] = nom;}
public String getNom() {return nom;}
}

9
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

Maintenant il faut rendre ces classes « mappé » c.a.d créer pour chaque classe un fichier

« --------.[Link] » :

[Link]:

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"[Link]

<hibernate-mapping package
="[Link]">
<class name="Ecole" table="T_ECOLE">

<id name="num" type="int" column="Ecole_num">


<generator class="native"/>
</id>

<property name="nom" type="string" column="Ecole_nom"/>


<property name="adresse" type="string"
column="Ecole_adresse"/>

<property name="nombreSalles" type="int"


column="Ecole_nb_salles"/>

<bag name="enseignants" cascade="all">


<key column="FK_Ecole"/>
<one-to-many class="Enseignant" ></one-to-many>
</bag>

<bag name="etudiants" cascade="all">


<key column="FK_ECOLE"></key>
<one-to-many class="Etudiant"/>
</bag>

<bag name="fournisseurs" table="ECOLE_FOURNISSEUR"


cascade="all">
<key column="FK_ECOLE"></key>
<many-to-many column="FK_FOURNISSEUR"
class="Fournisseur"></many-to-many>
</bag>

<bag name="actionnaires" table="ECOLE_ACTIONNAIRE"


cascade="all">
<key column="FK_ECOLE"></key>
<many-to-many column="FK_ACTIONNAIRE"
class="Actionnaire"></many-to-many>
</bag>

</class></hibernate-mapping>

10
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

[Link]:

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"[Link]

<hibernate-mapping package
="[Link]">
<class name="Enseignant" table="T_Enseignant">

<id name="ncin" type="string" column="Ens_ncin">


</id>

<property name="nom" type="string" column="Ens_nom"/>

</class></hibernate-mapping>

[Link]:

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"[Link]

<hibernate-mapping package
="[Link]">
<class name="Etudiant" table="T_Etudiant">

<id name="id" type="int" column="etd_id">


<generator class="increment"></generator>
</id>

<property name="nom" type="string" column="etd_nom"/>


<many-to-one name="ecole" column="FK_ECOLE"></many-to-one>
</class>

</hibernate-mapping>

[Link]:

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

11
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

"[Link]
<hibernate-mapping package="[Link]">

<class name="Evennement" table="T_Evennement">

<id name="id" type="int" column="Even_ID">


<generator class="native"/>
</id>

<property name="titre" type="string" column="EVEN_TITRE"/>


<property name="date" type="timestamp" column="EVEN_DATE"/>

<many-to-one name="ecole" column="FK_ECOLE"


cascade="all"></many-to-one>
</class>

</hibernate-mapping>

[Link]:

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"[Link]

<hibernate-mapping package
="[Link]">
<class name="Fournisseur" table="T_Fournisseur">
<id name="nom" type="string" column="FRN_NOM">
</id>
</class>
</hibernate-mapping>

12
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

[Link]:

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"[Link]

<hibernate-mapping package
="[Link]">
<class name="Actionnaire" table="T_ACTIONNAIRE">

<id name="id" type="int" column="ACT_ID">


<generator class="native"/>
</id>

<property name="nom" type="string" column="ACT_NOM"/>

<bag name="ecoles" table="ECOLE_ACTIONNAIRE" inverse="false"


cascade="all">
<key column="FK_ACTIONNAIRE"></key>
<many-to-many column="FK_ECOLE" class="Ecole"></many-to-many>

</bag>
</class>
</hibernate-mapping>

Maintenant il faut ajouter ceci à [Link] pour rendre les classes mappés :

<mapping
resource="com/esprit/hibernate/persistance/[Link]"/>
<mapping
resource="com/esprit/hibernate/persistance/[Link]"
/>
<mapping
resource="com/esprit/hibernate/persistance/[Link]"
/>
<mapping
resource="com/esprit/hibernate/persistance/[Link]"/>
<mapping
resource="com/esprit/hibernate/persistance/[Link]
"/>
<mapping
resource="com/esprit/hibernate/persistance/[Link]
"/

13
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

Manipulation et test :

1) Créer un package « [Link] »

Voici une classe qui test la création du shéma.

package [Link];

import [Link];
import [Link];

public class DdlTest {

public static void main(String[] args) {


SessionFactory sf=new Configuration().configure()
.buildSessionFactory();
}
}

Voici une classe qui teste l’ajout d’une nouvelle école (avec un fournisseur) :

package [Link];

import [Link];

import [Link];
import [Link];
import [Link];
import [Link];

import [Link];
import [Link];

public class EcoleFournisseurInsertionTest {

public static void main(String[] args) {


SessionFactory sf=new Configuration().configure()
.buildSessionFactory();

Session session=[Link]();
[Link]();

Transaction tx=[Link]();

14
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

Ecole ec=new Ecole();


[Link]("ESPRIT");
[Link](35);
Fournisseur fr1=new Fournisseur();
[Link]("ALLANI");
[Link](new ArrayList<Fournisseur>());
[Link]().add(fr1);
[Link](ec);
[Link]();
[Link]();
}
}

Cette classe liste les écoles a partir d’un fournisseur :

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

import [Link];
import [Link];

public class EcoleListingFromFournisseurTest {

/**
* @param args
*/
public static void main(String[] args) {
SessionFactory sf=new Configuration().configure()
.buildSessionFactory();

15
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

Session session=[Link]();

[Link]();

Transaction tx=[Link]();
Ecole e1;
e1=(Ecole)[Link]([Link],1 );
Actionnaire
act1=(Actionnaire)[Link]([Link],1 );
for (Ecole e:[Link]()){
[Link]().warn([Link]());

[Link]().warn("____________________");
}

[Link]();
}
}

Insertion d’un eseignant Avec une ecole existante:

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];

import [Link];
import [Link];

public class InsertionEnseignantAecoleExistante {

/**
* @param args
*/
public static void main(String[] args) {
//[Link](args);

SessionFactory sf=new Configuration().configure()


.buildSessionFactory();

Session session=[Link]();

16
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies

[Link]();

Transaction tx=[Link]();

Ecole e=(Ecole) [Link]([Link], 1);


Enseignant ens1=new Enseignant();
[Link]("00987");
[Link]("Foulen1");

Enseignant ens2=new Enseignant();


[Link]("005678");
[Link]("Foulen2");

[Link]().add(ens1);
[Link]().add(ens2);

[Link](e);
[Link]();

17
TP 2- Hibernate (Architectures n-tiers JEE)

Vous aimerez peut-être aussi