Académique Documents
Professionnel Documents
Culture Documents
TP2(Hibernate)
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.
File->New->Project
Java->JavaProject
1
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies
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 : hibernate3.jar.
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
Choisissez « User Library » puis, « Next »une liste des librairies s’affiche ,choisissez les
librairie Mysql (voir TP1) et hibernate, puis« Finish »
Cliquer sur le projet «PremierHibernate » puis clique droit new Source Folder
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)) :
<property
name="connection.url">jdbc:mysql://localhost/hibernate</proper
ty>
<property name="connection.username">esprituser</property>
<property name="connection.password">espritpwd</property>
<property
name="connection.driver_class">com.mysql.jdbc.Driver</property
>
<property
name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property
name="transaction.factory_class">org.hibernate.transaction.JDB
CTransactionFactory</property>
<!-- thread is the short name for
org.hibernate.context.ThreadLocalSessionContext
and let Hibernate bind the session automatically to the
thread
-->
<property
name="current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>
4
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L -
%m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=debug, stdout
log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trac
e
5
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies
* 1 1 *
Enseignant Ecole Evénement
*
*
*
*
*
Fournisseur Etudiant
Actionnaire
class Ecole
package com.esprit.hibernate.persistance;
import java.util.List;
6
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies
package com.esprit.hibernate.persistance;
import java.util.List;
}
package com.esprit.hibernate.persistance;
7
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies
package com.esprit.hibernate.persistance;
8
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies
package com.esprit.hibernate.persistance;
import java.util.Date;
package com.esprit.hibernate.persistance;
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
« --------.hbm.xml » :
Ecole.hbm.xml:
<hibernate-mapping package
="com.esprit.hibernate.persistance">
<class name="Ecole" table="T_ECOLE">
</class></hibernate-mapping>
10
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies
Enseignant.hbm.xml:
<hibernate-mapping package
="com.esprit.hibernate.persistance">
<class name="Enseignant" table="T_Enseignant">
</class></hibernate-mapping>
Etudiant.hbm.xml:
<hibernate-mapping package
="com.esprit.hibernate.persistance">
<class name="Etudiant" table="T_Etudiant">
</hibernate-mapping>
Evennement.hbm.xml:
11
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.esprit.hibernate.persistance">
</hibernate-mapping>
Fournisseur.hbm.xml:
<hibernate-mapping package
="com.esprit.hibernate.persistance">
<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
Actionnaire.hbm.xml:
<hibernate-mapping package
="com.esprit.hibernate.persistance">
<class name="Actionnaire" table="T_ACTIONNAIRE">
</bag>
</class>
</hibernate-mapping>
Maintenant il faut ajouter ceci à Hibernate.cfg.xml pour rendre les classes mappés :
<mapping
resource="com/esprit/hibernate/persistance/Ecole.hbm.xml"/>
<mapping
resource="com/esprit/hibernate/persistance/Evennement.hbm.xml"
/>
<mapping
resource="com/esprit/hibernate/persistance/Enseignant.hbm.xml"
/>
<mapping
resource="com/esprit/hibernate/persistance/Etudiant.hbm.xml"/>
<mapping
resource="com/esprit/hibernate/persistance/Fournisseur.hbm.xml
"/>
<mapping
resource="com/esprit/hibernate/persistance/Actionnaire.hbm.xml
"/
13
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies
Manipulation et test :
package com.esprit.hibernate.test;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
Voici une classe qui teste l’ajout d’une nouvelle école (avec un fournisseur) :
package com.esprit.hibernate.test;
import java.util.ArrayList;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.esprit.hibernate.persistance.Ecole;
import com.esprit.hibernate.persistance.Fournisseur;
Session session=sf.getCurrentSession();
sf.openSession();
Transaction tx=session.beginTransaction();
14
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies
package com.esprit.hibernate.test;
import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.esprit.hibernate.persistance.Actionnaire;
import com.esprit.hibernate.persistance.Ecole;
/**
* @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=sf.getCurrentSession();
sf.openSession();
Transaction tx=session.beginTransaction();
Ecole e1;
e1=(Ecole)session.load(Ecole.class,1 );
Actionnaire
act1=(Actionnaire)session.load(Actionnaire.class,1 );
for (Ecole e:act1.getEcoles()){
Logger.getRootLogger().warn(e.getNom());
Logger.getRootLogger().warn("____________________");
}
tx.commit();
}
}
package com.esprit.hibernate.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.esprit.hibernate.persistance.Ecole;
import com.esprit.hibernate.persistance.Enseignant;
/**
* @param args
*/
public static void main(String[] args) {
//EcoleInsertionTest.main(args);
Session session=sf.getCurrentSession();
16
TP 2- Hibernate (Architectures n-tiers JEE)
ESPRIT -Ecole Supérieure privée d’ingénierie et de technologies
sf.openSession();
Transaction tx=session.beginTransaction();
e.getEnseignants().add(ens1);
e.getEnseignants().add(ens2);
session.saveOrUpdate(e);
tx.commit();
17
TP 2- Hibernate (Architectures n-tiers JEE)