Accéder au contenu principal

Tutorial Hibernate pour les débutants



I. Installation de Hibernate sur Eclipse Web Tools Platform (WTP)

La première étape du projet consiste à installer Hibernate 3 sur la version WTP d'Eclipse.


1. Téléchargement de Hibernate 3 et WTP

Pour télécharger Hibernate 3, il faut aller à cette adresse : http://www.hibernate.org/


Hibernate Core 3.2.5.ga, Hibernate Tools 3.2.0 GA sont les principaux fichiers dont nous aurons besoin dans notre projet. 
 


On télécharge maintenant Eclipse Web Tools Platform de cette adresse :http://download.eclipse.org/webtools/downloads/drops/R2.0/R-2.0.1-20070926042742/
La version dont on aura besoin dans notre projet est
wtp-all-in-one-sdk-win32, elle intègre les principaux plugins pré-installés pour le développement d'application J2EE.





2. Installation de WTP et de Hibernate

On décompresse WTP.
Voici le contenu de l'archive
wtp-all-in-one-sdk-R-2.0.1-20070926042742-win32.zip
 

On décompresse les fichiers hibernate-3.2.5.ga.zip et HibernateTools-3.2.0.GA.zip
 


On copie le contenu du dossier plugins de HibernateTools-3.2.0.GA dans le dossier plugins d'Eclipse
 


On copie le contenu du dossier features de HibernateTools-3.2.0.GA dans le dossier features d'Eclipse.



Chapitre N° II : Projet Tomcat - Hibernate



La deuxième étape du projet consiste à créer un projet Tomcat, et les fichiers nécessaires au bon fonctionnement de Hibernate.


1. Création du projet Tomcat

Au lancement d'Eclipse, on définit un workspace, puis on coche "use this as the default and do not ask again"
 

Pour créer un nouveau projet Tomcat, on va à New -> Other...
 


On sélectionne Dynamic Web Project dans le menu Web, puis on clique sur next.


On donne un nom à notre projet, par exemple tutorialDB, puis on clique sur New... dans Target Runtime
 


On sélectionne Apache Tomcat v6.0 dans le menu Apache puis on clique sur Next
 


On ajoute le chemin de tomcat dans Tomcat installation directory
 


On sélectionne Apache Tomcat v6.0 dans Target Runtime
 


On clique sur Finish puis sur Yes pour basculer vers Java EE perspective
 


On clique sur Go to workbench pour retourner à notre projet. 
 


Notre projet a bien été créé et voici son arborescence.




2. Préparation du projet

Maintenant on retourne dans le dossier où on a décompressé Hibernate Core pour copier les fichiers indispensable à son utilisation dans le dossier WEB-INF\lib.
Ces fichiers sont :
ant-1.6.5.jar, ant-antlr-1.6.5.jar, ant-junit-1.6.5.jar, ant-launcher-1.6.5.jar, antlr-2.7.6.jar, ant-swing-1.6.5.jar, asm.jar, asm-attrs.jar, cglib-2.1.3.jar, commons-collections-2.1.1.jar, commons-logging-1.0.4.jar, dom4j-1.6.1.jar, ehcache-1.2.3.jar, jta.jar, log4j-1.2.11.jar, oscache-2.1.jar
 


A la fin, on copie hibernate3.jar qui se trouve à la racine du dossier de Hibernate Core dans le dossier WEB-INF\lib.


On télécharge le driver JDBC pour MySQL : http://dev.mysql.com/downloads/connector/j/5.1.html




On décompresse le fichier, puis on copie le driver dans le dossier WEB-INF\lib.




3. Création du fichier de configuration

Maintenant, on va passer à la création d'un fichier de configuration pour nous connecter à notre base de données MySQL, puis on va générer les fichiers de mapping et les classes Java correspondant aux tables de la base.
On commence par aller à
New -> Others...

 


On choisit Hibernate Configuration File (cfg.xml) dans le menu Hibernate

 


On laisse le nom à hibernate.cfg.xml puis on clique sur Next.






On sélectionne MySQL dans Database dialect, puis com.mysql.jdbc.Driver dans Driver class, on écrit l'adresse de la base de données dans Connection URL et à la fin on met le nom d'utilisateur et le mot de passe de la base de données.
On clique sur
Next
 


On donne un nom à la console Hibernate par exemple : tutorialDB.
Puis on va à l'onglet
Classpath .


On ajoute le driver JDBC de MySQL, puis on clique sur Finish pour créer notre fichier de configuration. 
 


Notre fichier de configuration a bien été créé.
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/tutorialDB</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
</session-factory>
</hibernate-configuration>


On ajoute des propriétés au fichier de configuration :
Les propriétés a ajouté au fichier hibernate.cfg.xml
<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.show_sql">true</property>

On va maintenant vérifier si Hibernate arrive à se connecter à MySQL.
On va à
Windows -> Show View -> Others...




On sélectionne Hibernate Configurations dans le menu Hibernate.


Quand on déroule l'arborescence de la base de données, on voit bien que Hibernate arrive à se connecter à MySQL.


On passe à Java perspective pour avoir accès à Hibernate Tools.




4. Génération des fichiers de mapping et des classes Java

Maintenant, on passe à la génération de nos fichiers de mapping et des classes Java avec l'outil Hibernate Tools.
On commence par aller à
Run -> Hibernate Code Generation... -> Open Hibernate Code Generation Dialog...


On crée une nouvelle configuration.
On fait un clique droit sur
Hibenate Code Generation puis on sélectionne New
 


Dans l'ongle Main, on commence par sélectionner notre base de données dans Console configuration, puis on ajoute le chemin du répertoire source de notre projet \tutorialDB\WEB-INF\src dans Output directory, on coche Reverse engineer from JDBC Connection, et à la fin on ajoute le nom du Package où les fichiers vont être créer. 
 


Dans reveng.xml, on clique sur Setup... puis Create new... pour créer notre fichier reveng.xml

 


On sélectionne le dossier source de notre projet, puis on clique sur Finish
 


Maintenant que tout est ok dans l'onglet Main, on passe à Exporters.




Dans General settings, on coche Use Java 5 syntax.Puis dans Exporters on coche :


  • Domain code (.java) pour créer les classes Java correspondantes à nos 2 tables de la base de données, qu'on utilisera pour le développement plus tard.
  • Hibernate XML Mappings (.hbm.xml) pour créer nos fichiers de mapping.
  • DAO code (.java) (Data Access Object) pour créer nos objets persistants.
  • Hibernate XML Configuration (.cfg.xml) pour mettre à jour notre fichier de configuration.
A la fin, on clique sur Apply puis sur Run
 


Voici la nouvelle structure de notre projet.
Le package a été créé ainsi que les classes Java et les fichiers de mapping. 



 


Maintenant, il va falloir éditer les 2 fichiers de mapping puisque Hibernate ne reconnait pas que les id des deux tables doivent être incrémenté automatiquement.
On ouvre le fichier de mapping
Dept.hbm.xml, puis on change la classe du tag generator de la colonne id_dept de identity à increment
 


On fait la même chose pour le fichier de mapping personnel.hbm.xml




5. Création de HibernateUtil.java

On va à New -> Package
 


On crée un package au nom de com.util




On va à New -> File
 


On crée un nouveau fichier au nom de HibernateUtil.java
 


On ajoute le code suivant :
HibernateUtil.java
package com.util;

import org.hibernate.*;
import org.hibernate.cfg.*;


public class HibernateUtil {
public static final SessionFactory sessionFactory;


static {
try {
// Création de la SessionFactory à partir de hibernate.cfg.xml
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}


public static final ThreadLocal session = new ThreadLocal();


public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}


6. Test d'insertion, de mise à jour, de sélection et de suppression

Maintenant on va procéder à la création du fichier testInsert.java pour tester si l'insertion se passe bien.


On ajoute le code suivant :
testInsert.java
import org.hibernate.*;
import com.tutorialDB.Dept;
import com.util.HibernateUtil;


public class testInsert {


public static void main(String[] args)
throws HibernateException {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

Dept d1 = new Dept();
d1.setNomDept("informatique");
session.save(d1);

session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
}
}
On va à Run -> Open Run Dialog...
 


On fait un clique droit sur Java Application puis on sélectionne New.


On clique sur Run pour compiler notre fichier.


L'insertion s'est bien déroulée.
Console
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate: select max(id_dept) from dept
Hibernate: insert into tutorialDB.dept (nom_dept, id_dept) values (?, ?)
On vérifie avec Toad si les données ont bien été transmises.


Pour tester la mise à jour, on crée un nouveau fichier au nom de testUpdate.java, puis on ajoute le code suivant :
testUpdate.java
import org.hibernate.*;
import com.tutorialDB.Dept;
import com.util.HibernateUtil;


public class testUpdate {


public static void main(String[] args)
throws HibernateException {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

Dept d1 = (Dept) session.load(Dept.class, 1);

d1.setNomDept("finance");
session.save(d1);

session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
}
}
On crée une nouvelle configuration d'exécution puis on exécute la classe.
La mise à jour s'est bien déroulée.

Console
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate: select dept0_.id_dept as id1_0_0_, dept0_.nom_dept as nom2_0_0_ from tutorialDB.dept dept0_ where dept0_.id_dept=?
Hibernate: update tutorialDB.dept set nom_dept=? where id_dept=?
On vérifie dans Toad pour voir si la mise à jour s'est bien déroulée. 
 


Pour tester la sélection, on crée un nouveau fichier au nom de testSelect.java, puis on ajoute le code suivant :
testSelect.java
import java.util.Iterator;
import org.hibernate.*;
import com.util.HibernateUtil;


public class testSelect {


public static void main(String[] args)
throws HibernateException {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

String query = "select d.id_dept, d.nom_dept from dept d where d.id_dept = 1";

Iterator results = session.createSQLQuery(query).list().iterator();

while(results.hasNext())
{
Object[] row = (Object[]) results.next();
Integer id = (Integer) row[0];
String nom = (String) row[1];
System.out.println("id_dept = "+id+"| nom_dept = "+nom);
}

session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
}
}
La sélection s'est bien déroulée.
Console
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate: select d.id_dept, d.nom_dept from dept d where d.id_dept = 1
id_dept = 1| nom_dept = finance
Pour tester la suppression, on crée un nouveau fichier au nom de testDelete.java, puis on ajoute le code suivant :
testDelete.java
import org.hibernate.*;
import com.tutorialDB.Dept;
import com.util.HibernateUtil;


public class testDelete {


public static void main(String[] args)
throws HibernateException {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

Dept d1 = (Dept) session.load(Dept.class, 1);
session.delete(d1);

session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
}
}
La suppression s'est bien déroulée.
Console
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate: select dept0_.id_dept as id1_0_0_, dept0_.nom_dept as nom2_0_0_ from tutorialDB.dept dept0_ where dept0_.id_dept=?
Hibernate: delete from tutorialDB.dept where id_dept=?
On vérifie dans Toad. On voit que la suppression s'est bien déroulée.




Commentaires

Posts les plus consultés de ce blog

How to print a div of a page using jquery plugins

Sometimes you want to print a receipt or a some kind of voucher, you have two choice: Generate a PDF document of your content . Send it directly to the printer . For me i find it much easily to use the second choice, because generating a PDF via the code is much heavier and needs to add libraries or any type of external code . So here is a simple example using Jquery and a specefic jquery plugin jquery.PrintArea.js . <html> <script src="jquery-1.9.0.js" type="text/JavaScript" language="javascript"></script> <script src="jquery.PrintArea.js" type="text/JavaScript" language="javascript"></script> <head> <script type="text/javascript" > $(document).ready(function() { $("#button").click(function() { //$(this).hide(); ...

Sauvegader une base d donnees dans un fichier sql

Afin de sauvegarder votre base de données Mysql dans un fichier externe; vous pouvez utiliser la commande mysqldump . Voila le syntaxe: mysqldump -u root -h localhost -p'password' database>/var/www/html/database_backup.sql Avec root : est l'utilisateur Mysql qui va sauvegarderla base, il doit avoir les permissions requises. localhost : l'emplacement de votre serveur Mysql; s'il est pas installé sur la machine locale , peut etre c'est 172.16.18.15 . password : c'est le mot de passe de l'utilisateur déjà mentionné au dessus . database : le nom de la base de données que vous voulez exporter  . database_backup.sql : c'est le fichier généré devotre nouvelle base de données .