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".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.

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> |
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 à 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.
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 -> PackageOn 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 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 (?, ?) |
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(); } } |
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=? |
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(); } } |
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 |
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(); } } |
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=? |
Commentaires
Enregistrer un commentaire