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

JSF Java Discussion :

Probleme insertion dans la base de données avec hibernate


Sujet :

JSF Java

  1. #1
    Membre du Club Avatar de majdicosta
    Homme Profil pro
    Developpeur Web Symfony 2/3
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Developpeur Web Symfony 2/3
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 65
    Points
    65
    Par défaut Probleme insertion dans la base de données avec hibernate
    Bonjour,
    je fais un projet web en j2ee JSF + primefaces 3.5
    premièrement je fais le mapping de la base données et les tables avec hibernate
    je crée le fichier hibernate.cfg.xml et hibernate.reveng.xml aussi je cree le fichier hibernate mapping files et pojos from databases et hibernate util
    j'ai une base de données nommée base et un table nommé compte
    je crée une interface java nommée compteDao et des méthodes abstraites aussi je crée un autre fichier java class pour implémentation des méthodes abstraites et ils fonctionnent correctement.
    Fichier compteDao

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    package com.projet.dao;
     
    import com.projet.compte.Compte;
    import java.util.List;
     
    public interface compteDao {
         public void inserer(Compte compte);
        public void mettre_ajour(Compte compte);
        public void supprimer(Compte compte); 
        public Compte rechercherCodeemp(Integer id);
        public  List<Compte> rechercher();
    }
    Fichier compteDaoImpl
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    package com.projet.dao.impl;
     
    import com.projet.compte.Compte;
    import com.projet.dao.compteDao;
    import com.projet.util.HibernateUtil;
    import java.util.List;
    import org.hibernate.Session;
     
     
    public class compteDaoImpl implements compteDao{
     
     
        @Override
        public void inserer(Compte compte) {
            Session session = HibernateUtil.getSessionFactory().openSession(); 
            try{
                session.beginTransaction();
                session.save(compte);
                session.beginTransaction().commit();
     
            }catch(Exception e){
                System.out.println("errreur insertion"+e.getMessage());
                session.beginTransaction().rollback();
            }
     
        }
     
        @Override
        public void mettre_ajour(Compte compte) {
        Session session = HibernateUtil.getSessionFactory().openSession(); 
            try{
                session.beginTransaction();
                session.update(compte);
                session.beginTransaction().commit();
     
            }catch(Exception e){
                System.out.println("errreur mise a jour"+e.getMessage());
                session.beginTransaction().rollback();
            }    }
     
        @Override
        public void supprimer(Compte compte) {
        Session session = HibernateUtil.getSessionFactory().openSession(); 
            try{
                session.beginTransaction();
                session.delete(compte);
                session.beginTransaction().commit();
     
            }catch(Exception e){
                System.out.println("errreur suppression"+e.getMessage());
                session.beginTransaction().rollback();
            }    }
     
        @Override
        public Compte rechercherCodeemp(Integer id) {
                Session session = HibernateUtil.getSessionFactory().openSession(); 
                return (Compte) session.load(Compte.class, id);
     
        }
     
        @Override
        public List<Compte> rechercher() {
                Session session = HibernateUtil.getSessionFactory().openSession(); 
                   return session.createQuery("from Compte ").list();
     
     
        }
    }
    deuxièmement je crée un fichier comptebean contient deux attributs
    avec deux méthodes pour l'insertion dans le base de données
    Fichier cmptebean

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    package com.projet.bean;
     
    import com.projet.compte.Compte;
    import com.projet.dao.compteDao;
    import com.projet.dao.impl.compteDaoImpl;
    import java.util.List;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import javax.faces.context.FacesContext;
    import javax.faces.event.ActionEvent;
     
    @ManagedBean(name = "CompteBean")
    @SessionScoped
     
    public class CompteBean {
     
        private Compte compte;
        private List<Compte> comptes;
     
        public CompteBean() {
            compte = new Compte();
        }
        public void preparer (ActionEvent actionEvent){
            compte = new Compte();
        }
     
        public void inserer(ActionEvent actionEvent)
        {
            compteDao cmpt= new compteDaoImpl();
            cmpt.inserer(compte);
            FacesContext context = FacesContext.getCurrentInstance();  
             context.addMessage(null, new FacesMessage("ajout réussi !!!"));
                            compte = new Compte();
     
     
     
        }
        public Compte getCompte() {
            return compte;
        }
     
        public void setCompte(Compte compte) {
            this.compte = compte;
        }
     
        public List<Compte> getComptes() {
            compteDao comptedao = new compteDaoImpl();
            comptes = comptedao.rechercher();
            return comptes;
        }
     
     
     
     
    }
    dans le fichier index.xhtml

    je crée une datatable pour l’affichage et il fonctionne correctement juste je trouve un problème pour l'insertion directement dans la base de données et l'affichage instantanée dans la datatable

    fichier index.xhtml
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:p="http://primefaces.org/ui">
        <h:head>
            <title>Facelet Title</title>
            <link rel="Stylesheet" type="text/css" href="ressources/css/style.css"/>
        </h:head>
        <h:body>
            <!-- Insertion d'un bouton -->
            <h:form>
                <p:commandButton value="&nbsp; Nouveau utilisateur" image="icon-add"  actionListener="#{CompteBean.preparer(actionEvent)}"
                                 oncomplete="user.show();"/>
     
            </h:form><br/>
     
            <!-- Insertion d'un tableau contient l'affichage des tuples a partir base de données-->
            <h:form id="frmcomptes">  
                <p:dataTable  id="table" var="compte" value="#{CompteBean.comptes}"  > 
     
                    <p:column headerText="Id" >  
                <h:outputText value="#{compte.id}" />  
            </p:column>  
     
            <p:column headerText="Nom" >  
                <h:outputText value="#{compte.nom}" />  
            </p:column>  
     
            <p:column headerText="Prenom" >  
                <h:outputText  value="#{compte.prenom}" />  
            </p:column>  
     
            <p:column headerText="CIN" >  
                <h:outputText value="#{compte.cin}" />  
            </p:column>  
                      <p:column style="width:10%; text-align: center;">  
                          <p:commandButton update=":frmcomptes" oncomplete="carDialog.show()" image="icon-edit" title="Editer" />  
                    <p:commandButton  update=":frmcomptes" oncomplete="carDialog.show()" image="icon-supp" title="Supprimer"/>  
     
            </p:column>
        </p:dataTable>  
        </h:form> 
            <!-- affichage d'un formulaire pour l'ajout d'un nouveau utilisateur-->
            <h:form id="FrmNewuser">
                  <p:dialog header="Nouveau utilisateur" widgetVar="user" resizable="false" id="user"  modal="true">  
          <p:growl id="growl" showDetail="true" sticky="true" />  
     
            <h:panelGrid id="newuser" columns="2" cellpadding="4" style="margin:0 auto;">  
                     <h:outputText value="Nom :" />  
                     <h:inputText value="#{CompteBean.compte.nom}" style="font-weight:bold; width: 300px;"/>  
     
                <h:outputText value="Prenom :" />  
                <h:inputText value="#{CompteBean.compte.prenom}" style="font-weight:bold; width: 300px;"/>  
     
     
                <h:outputText value="CIN :" />  
                <h:inputText value="#{CompteBean.compte.cin}" style="font-weight:bold; width: 300px;"/>  
     
                   </h:panelGrid>  
                <p:separator />  
                <p:commandButton update=":frmcomptes,growl,table"  oncomplete="user.hide()" actionListener="#{CompteBean.inserer(actionEvent)}" image="icon-save"  value="&nbsp;sauvegarder"  />
            <p:commandButton update=":frmcomptes" oncomplete="user.hide()" image="icon-cancel" value="&nbsp;Annuler" />  
     
        </p:dialog>  
     
    </h:form> 
        </h:body>
    </html>
    S'il est possible de m'aider

  2. #2
    Membre du Club Avatar de majdicosta
    Homme Profil pro
    Developpeur Web Symfony 2/3
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Developpeur Web Symfony 2/3
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    j'oublie une autre information pour l'insertion je crée une bouton nommée Nouvel utilsateur, lorsque je tape sur le bouton une boite p:dialog s'ouvre contient une formulaire et deux bouton save et cancel
    apres le remplissage je tape sur save rien ne change dans le datatable

  3. #3
    Membre du Club Avatar de majdicosta
    Homme Profil pro
    Developpeur Web Symfony 2/3
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Developpeur Web Symfony 2/3
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    Aucune reponse
    SVP j'ai seulement cet problème pour terminer l'etape d'insertion dans la base de données

  4. #4
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Bonjour ,
    Peux tu plutot éssayer de faire ça pour la persistence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Transaction tx;
     try {
         tx = session.beginTransaction();
         //do some work
          session.save(compte);
         tx.commit();
     }
     catch (Exception e) {
         if (tx!=null) tx.rollback();
         throw e;
     }
     finally {
         sess.close();
     }

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Points : 443
    Points
    443
    Par défaut
    essaye tout d'abord d'ouvrir une session ensuite commencer la transaction,appel du traitement et validation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Session session=hibernateutil.currentSession();
    Transaction tx=null; 
    tx=session.beginTransaction(); 
    session,save(ton objet); 
    tx.commit();
    Bon courage

  6. #6
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par ahmedpa Voir le message
    essaye tout d'abord d'ouvrir une session ensuite commencer la transaction,appel du traitement et validation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Session session=hibernateutil.currentSession();
    Transaction tx=null; 
    tx=session.beginTransaction(); 
    session,save(ton objet); 
    tx.commit();
    Bon courage
    Au tout début de son code il avait déjà ouvert la session, c'est la suite qui ne devait pas être bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Session session = HibernateUtil.getSessionFactory().openSession();

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Points : 443
    Points
    443
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    Au tout début de son code il avait déjà ouvert la session, c'est la suite qui ne devait pas être bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Session session = HibernateUtil.getSessionFactory().openSession();
    Oui Oui je sais juste j'ai donné ce qu'il faut faire ou les étapes à suivre comme début pour traiter un objet

  8. #8
    Membre du Club Avatar de majdicosta
    Homme Profil pro
    Developpeur Web Symfony 2/3
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Developpeur Web Symfony 2/3
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    Probleme Résolu

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut jee hibernate
    j'ai le même problème que vous s'il vous plait aidez moi @majdicosta

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

Discussions similaires

  1. [MySQL] Problème pour l'insertion dans une base de données avec variables $_POST
    Par hakkio dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/03/2012, 17h04
  2. Réponses: 2
    Dernier message: 25/05/2011, 15h36
  3. Probleme d'insertion dans la base de données
    Par dedein84 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/07/2008, 09h33
  4. Réponses: 7
    Dernier message: 29/02/2008, 16h30
  5. Probleme d'insertion dans la base de données
    Par PrinceMaster77 dans le forum ASP
    Réponses: 5
    Dernier message: 11/06/2004, 16h21

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