Chinese (People's Republic of China)  English  Français


Supinfo-Projects.com
Tous les projets des élèves ingénieurs de Supinfo



Projets
  Dernier Projet
  Les plus populaires
  Tous les Projets

101 Visiteurs
3168 Projets


My Supinfo-Projects

   Connectez-vous
   Créez un Compte


Synopsis

   344 Visites
   Note INTERNET : 14.8
    (7 Votants)
   1 Commentaires

   Lire l'article

Evaluez cet article

20
18
16
14
12
10
8
6
4
2
0


Commentez cet article

Auteur :

Email :

Votre commentaire :



 
2005 - Note de Synthèse Stage
Tutorial : débuter avec Hibernate sous Eclipse
[40 mn de lecture - paru le 11/15/2004 1:21:29 PM - Public : Débutant]

Auteur

minosisJulien DEFAUT
Elève-Ingénieur Supinfo Paris
Promotion SUPINFO 2005

   Lui écrire
   Tous les projets de cet auteur
   Le mini-CV de cet auteur

4. Test des classes

Maintenant que des classes ont été générées grâce à Hibernate et Hibernate Synchronizer, nous pouvons les tester.

4.1. Classe HibernateUtil

Une classe Hibernate appellée SessionFactory permet à partir du fichier de configuration (hibernate.cfg.xml) d'être associé à la source de données. Elle fournit des objets Session pour manipuler les données. Cependant, en général, les serveurs d'application et les conteneurs de servlets, exécutent dans plusieurs threads le même code. En utilisation directe, SessionFactory serait donc instancié autant de fois qu'il y a de threads. Chaque instance se base pourtant sur le même fichier de configuration. Il est donc plus adapté de rendre une même instance de SessionFactory accessible par les threads. Nous allons, pour celà, écrire une classe trouvée dans l'aide en ligne d'Hibernate.org.

Dans votre projet HibernateTest, faites sur "com.minosis.bdd" : "Bouton droit > New > File". Donnez-lui comme nom "HibernateUtil.java".

Copiez dans ce fichier vide, le contenu suivant :

package com.minosis.hibernate;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
public class HibernateUtil {
 private static final SessionFactory sessionFactory;
 static {
   try {
   // Crée la SessionFactory
   sessionFactory =
	 new Configuration().configure().buildSessionFactory();
   } catch (HibernateException ex) {
   throw new RuntimeException("Problème de configuration : "
   + ex.getMessage(), ex);
   }
   }
 public static final ThreadLocal session = new ThreadLocal();
 public static Session currentSession()
		throws HibernateException {
   Session s = (Session) session.get();
   // Ouvre une nouvelle Session, si ce Thread n'en a aucune
   if (s == null) {
   s = sessionFactory.openSession();
   session.set(s);
   }
   return s;
   }
 public static void closeSession()
		throws HibernateException {
   Session s = (Session) session.get();
   session.set(null);
   if (s != null)
   s.close();
   }
 }

4.2. Classe Test

Nous allons, avec cette classe, tester la lecture, la modification et l'insertion de données dans "t_contact".

Faites sur le répertoire "src" : "Bouton droit > New > File". Nommez le fichier "Test.java".

Placez dans Test.java, le code suivant :

import java.util.*;
import net.sf.hibernate.*;
import com.minosis.hibernate.*;
public class Test {
 public static void main(String[] args)
	throws HibernateException {
 }
}

Pour exécuter le programme (qui ne fait rien pour le moment), cliquez sur "Run > Run...". Puis sélectionnez "Java Application" et cliquez sur le bouton "New".

Si vous désirez démarrer de suite le programme, cliquez sur "Run" sinon vous pourrez le faire plus tard, cliquez sur "Close".

A) Insertion

Placez le code suivant dans la méthode main() :

Session session = HibernateUtil.currentSession();
   
Transaction tx = session.beginTransaction();
TContact contact = new TContact();
contact.setNom("Dupont");
contact.setPrenom("Jean");
contact.setAge(new Integer(44));
session.save(contact);

contact = new TContact();
contact.setNom("Lambert");
contact.setPrenom("Julie");
contact.setAge(new Integer(27));
session.save(contact);
   
tx.commit();
HibernateUtil.closeSession();

On crée une nouvelle Session à partir du SessionFactory static donné par HibernateUtil.
Une transaction est démarrée pour pallier à d'éventuels problèmes lors de l'insertion.
Jean Dupont est inséré ensuite, grâce à la classe TContact. Puis la transaction est commitée avant la fermeture de la session.

B) Mise à jour

Placez le code suivant dans la méthode main() (on la suppose vide) :

Session session = HibernateUtil.currentSession();
   
Transaction tx = session.beginTransaction();


TContact contact =
(TContact) session.load(TContact.class, new Integer(1));

contact.setPrenom("Jacques");
session.save(contact);

tx.commit();
HibernateUtil.closeSession();

Aprés le démarrage de la transaction, la classe persistante TContact correspondant à l'id=1 est chargée par session.load().
Le premier enregistrement est donc chargé et modifié. Si vous avez déjà exécuté le code d'insertion, "Jean" sera remplacé par "Jacques".
La méthode de sélection de l'enregistrement n'est pas vraiment parfaite. Rassurez vous, l'objet session fournit beaucoup de possibilité de filtre. Nous en verrons une dans l'exemple de lecture.

C) Lecture

Placez le code suivant dans la méthode main() (on la suppose vide) :

Session session = HibernateUtil.currentSession();
   
List list = session.find("from TContact where nom like '%t'");
Iterator it = list.iterator();
while(it.hasNext())
{
  TContact contact = (TContact)it.next();
  System.out.println(contact.getNom());
}

HibernateUtil.closeSession();

session.find() nous retourne une liste des enregistrements trouvés par la requête HQL. On lui demande ici de retourner tous les enregistrements trouvés dans un type List.
Il ne reste plus qu'à afficher les informations que l'on veut.

Cliquez sur l'icône "Run" pour tester ces exemples.

Les exemples ici sont trés simplistes mais permettent au moins d'avoir une vue globale du fonctionnement d'Hibernate. Le framework est évidemment beaucoup plus puissant.



Articles de la même catégorie

 Pages : Top


71 Visites
0 Commentaires
Présentation du développement de modules d’e-learning sous Inovae
[30 mn de lecture - paru le 11/15/2004 1:14:37 PM - Public : Débutant]

En savoir plus


31 Visites
0 Commentaires
Internet development and DOM Inspector
[25 mn de lecture - paru le 11/15/2004 12:43:46 PM - Public : Confirmé]

En savoir plus


63 Visites
0 Commentaires
Création d'un logiciel pour les surfeurs
[10 mn de lecture - paru le 11/15/2004 12:41:03 PM - Public : Débutant]

En savoir plus

   Tous les Articles


SUPINFO Training Center peut vous proposer une formation ...

   Devenez Ingénieur Système Microsoft en 35 jours avec SUPINFO Training Center
   Devenez Certifiés Cisco en 13 jours avec SUPINFO Training Center
   Devenez Administrateur Système Microsoft avec SUPINFO Training Center
   Devenez Développeur Microsoft .NET en 13 jours avec SUPINFO Training Center



Powered by Campus-Booster Technology
Conditions d'utilisation & Copyright | Respect de la vie privée
© Copyright 1965-2006 Supinfo Paris, Paris Academy of Computer Science
Supinfo, Ecole Supérieure d'Informatique et Paris Academy Of Computer Science are trade marks.
23, rue de Château LANDON - 75010 PARIS - Phone : +33 (0) 153359 700 Fax : +33 (0) 153359 701

Web site autided by :