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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Gérer la session Hibernate


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 32
    Par défaut Gérer la session Hibernate
    Bonjour tout le monde,
    je travaille sur un site web en J2EE, j'utilise Mysql, Hibernate, JavaBeans et JSF.
    je cherche la meilleure solution pour gérer la session hibernate.
    à ma connaissance, il existe deux façons d'ouvrir une session Hibernate:
    soit avec la méthode Opensession().
    ou bien getcurrentsession.
    quelle est d'après vous la méthode plus flexible?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //Quelles differences?
    session = sessionFactory.openSession();
    session = sessionFactory.getCurrentSession();
     
    et aussi avec :
    org.hibernate.StatelessSession sessionStateless = sessionFactory.openStatelessSession();

  3. #3
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    quelle est d'après vous la méthode plus flexible?
    JPA ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Par défaut
    Pour openCurrentSession();
    Créer ou récupère une session à partir du contexte : thread ou JTA.
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.current_session_context_class">JTA</property>
    dans le fichier de conf.
    Si cette propriété n'est pas spécifier on a une exception :
    No CurrentSessionContext configured!

    Pour openSession();
    Creer une nouvelle session à chaque appel dans le thread courant.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Par défaut
    La plus flexible selon moi est openCurrentSession(); car elle permet de s'adapter selon le contexte ( J2SE ou J2EE ) et qu'on peut réutiliser la session si elle est déjà créer et qu'elle n'est pas clôturer avec close();

    La seule contrainte c'est qu'il faut paramétrer le contexte dans le fichier de config.

    Donc Flexible mais pas rapide.

    openSession() est rapide d'utilisation mais il faut veiller à fermer la session.
    Donc Rapide mais pas Flexible.

    Selon moi

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Par défaut
    Certain utilise aussi HibernateUtil pour avoir une session par Thread.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    /**
     * Chaque thread posséde une et une seule session.
     */
    public final 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> session = new ThreadLocal<Session>();
     
    	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();
    	}
    }

  7. #7
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 32
    Par défaut
    Merci de votre help.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/07/2006, 11h55
  2. Réponses: 0
    Dernier message: 15/06/2006, 07h41
  3. Gérer les sessions avec PEAR
    Par manaboko dans le forum Langage
    Réponses: 1
    Dernier message: 08/05/2006, 14h50
  4. [Hibernate][Struts] Fermeture des session hibernate
    Par osopardo dans le forum Hibernate
    Réponses: 2
    Dernier message: 22/08/2005, 17h30
  5. [Hibernate][Spring] Session Hibernate initialisée
    Par mauvais_karma dans le forum Hibernate
    Réponses: 12
    Dernier message: 08/08/2005, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo