IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Introduction à Java EE


précédentsommairesuivant

V. Projet Tomcat - Hibernate

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

V-1. Création du projet Tomcat

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

On ajoute le chemin de tomcat dans Tomcat installation directory.

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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.

Image non disponible

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

Image non disponible

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

Image non disponible

Notre fichier de configuration a bien été créé.

hibernate.cfg.xml
Sélectionnez
<?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>
Image non disponible

On ajoute des propriétés au fichier de configuration :

Les propriétés a ajouté au fichier hibernate.cfg.xml
Sélectionnez
<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>
Image non disponible

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

Image non disponible

On sélectionne Hibernate Configurations dans le menu Hibernate.

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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.

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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.

Image non disponible

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

Image non disponible

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.

Image non disponible

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

Image non disponible

V-5. Création de HibernateUtil.java

On va à New -> Package

Image non disponible

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

Image non disponible

On va à New -> File

Image non disponible

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

Image non disponible

On ajoute le code suivant :

HibernateUtil.java
Sélectionnez
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;
	}
}

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

Image non disponible

On ajoute le code suivant :

testInsert.java
Sélectionnez
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...

Image non disponible

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

Image non disponible

On clique sur Run pour compiler notre fichier.

Image non disponible

L'insertion s'est bien déroulée.

Console
Sélectionnez
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.

Image non disponible

Pour tester la mise à jour, on crée un nouveau fichier au nom de testUpdate.java, puis on ajoute le code suivant :

testUpdate.java
Sélectionnez
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
Sélectionnez
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.

Image non disponible

Pour tester la sélection, on crée un nouveau fichier au nom de testSelect.java, puis on ajoute le code suivant :

testSelect.java
Sélectionnez
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
Sélectionnez
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
Sélectionnez
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
Sélectionnez
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.

Image non disponible

précédentsommairesuivant

Copyright © 2008 Jamal Eddine CHERKAOUI. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.