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 :

Hibernate et les transactions [Hibernate2]


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de didate
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 90
    Par défaut Hibernate et les transactions
    Bonjour

    Je suis entrain de faire une mini auto formation en Hibernate, j'arrive à faire des opérations CAUD.

    Par contre j'ai un souci avec la gestion des transactions, je n'arrive pas à desactiver l'autocommit sur la connexion. Le programme commit les mise à jours avant même que je ne fasse transaction.commit();

    Le code Java

    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
     
     
    // Récupération d'une session Hibernate
            Session s = HibernateUtils.getSession();
     
            // Début de la transaction
            Transaction t = s.beginTransaction();
     
            t.begin();
     
            // Création d'un objet Event
            Event e = new Event();
            e.setTitle("Titre de l'event 1");
            e.setDescription("Description de l'évènement 1");
            e.setBeginDate(new GregorianCalendar());
            e.setAllDay(false);
            //Cette instruction commit déjà les maj
            s.save(e);
     
            // J'aimerai que le commit se passe ici
            t.commit();
     
            // Fermeture de la session Hibernate
            s.close();
    Le fichier Hibernate.cfg.xml

    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                             "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
     <session-factory name="">
      <!--  Paramètres de connexion à la base de données -->
      <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
      <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="hibernate.connection.url">jdbc:mysql://localhost/pge_jpa_v1</property>
      <property name="hibernate.connection.username">root</property>
      <property name="hibernate.connection.password"/>
      <!-- Comportement pour la conservation des tables -->
      <property name="hbm2ddl.auto">create</property>
      <property name="hibernate.hbm2ddl.auto">update</property>
      <property name="hibernate.connection.autocommit">false</property>
      <!-- Fichiers à mapper -->
      <mapping class="fr.mistra.pgejpav1.jpa.Event"/>
      <!-- Affiche les logs SQL 
            <property name="show_sql">true</property> 
            <property name="hibernate.format_sql">true</property> 
            <property name="use_sql_comments">true</property> -->
     </session-factory>
    </hibernate-configuration>
    Je travail avec une base de données MySql

    Merci d'avance

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Que fait la classe HibernateUtils ?
    Peux-tu montrer son code ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre très actif
    Avatar de didate
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 90
    Par défaut
    la voici

    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
     
     
    package fr.mistra.pgejpav1.utils;
     
    import java.io.File;
     
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.AnnotationConfiguration;
     
    public class HibernateUtils {
        private static final SessionFactory sessionFactory;
     
        // Crée une unique instance de la SessionFactory à partir de hibernate.cfg.xml
        static {
            try {
                sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
            } catch (HibernateException ex) {
                throw new RuntimeException("Problème de configuration : " + ex.getMessage(), ex);
            }
        }
     
        // Renvoie une session Hibernate
        public static Session getSession() throws HibernateException {
        		return sessionFactory.openSession();
        }
    }

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ok, je voulais être sûr que tu ne modifiais pas l'auto-commit dans cette méthode...

    En théorie, c'est bien le paramétrage <property name="hibernate.connection.autocommit">false</property> qui permet de désactiver l'auto-commit.
    Il y a une chose dans ton fichier de paramétrage qui m'interpelle, c'est le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <session-factory name="">
    ... Peux-tu essayer en mettant un nom ?

    Une autre chose, il faut bien sûr que tu ais créé une base "innoDB" dans MySQL...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre très actif
    Avatar de didate
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 90
    Par défaut
    Merci pour la réponse.

    J'ai ajouter un nom la session-factory. La base de données est belle et bien de type "innoDB".

    J'ai toujours le même résultat...

    je vais essayer avec un autre SGBD pour voir ce que ça donne ...

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    J'ai utilisé MySQL assez souvent et je n'ai jamais eu ce problème, par contre, j'utilise un autre driver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. JSF et les Transactions hibernate
    Par mobuho dans le forum JSF
    Réponses: 4
    Dernier message: 01/03/2012, 13h54
  2. Réponses: 4
    Dernier message: 06/09/2005, 09h58
  3. petite aide sur les transactions et triggers SVP
    Par CharleLéo dans le forum Débuter
    Réponses: 4
    Dernier message: 15/11/2004, 20h43
  4. les Transactions sous interbase
    Par kouraichi35 dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/10/2004, 11h15
  5. [interbase] gerer les transactions
    Par webbulls dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/05/2004, 18h27

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