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 :

Data Access Object


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 70
    Par défaut Data Access Object
    voila un bout de code :
    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
     
    public String afficher()
     
    	{ 
    		boolean verif = false;
    		try
    		{
    		RavitaillementBean rb;
    		_RootDAO.initialize();
    		RvtDAO dao = new RvtDAO();
    		List<Rvt> lstrav=dao.findAll();
    		Iterator<Rvt> it=lstrav.iterator();
    		resultat = new ArrayList<RavitaillementBean>();
    		while (it.hasNext())
    		{
    			Rvt lbcn =(Rvt)it.next();
     
    			if (lbcn.getDtRvt().equals(this.jour))
    			{   
    				rb = new RavitaillementBean(lbcn.getMle(),lbcn.getId().getPNRvt(),lbcn.getDNRvt(),lbcn.getId().getSerie(),lbcn.getId().getIdTitre());
     
    				resultat.add(rb);
    				verif=true;
    			}
     
    		}
    		if (verif == true )
    		{
    			msg="";
    			return "ok"; 
    		}
    		else
    		{
    		msg="Pas de Ravitaillement Effectué cette journée";
    		return "nok";
    		}
     
    	}
    cette methode fait appel au constructeur de la classe RavitaillementBean dont le constructeur est le suivant :
    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
     
    public RavitaillementBean(int matricule,int ndeb, int nfin, String serie,
    				String titre) 
    	        {
    			super();
    			this.matricule = matricule;
    			this.ndeb = ndeb;
    			this.nfin = nfin;
    			this.serie = serie;
    			this.titre = titre;
    			this.quantite= this.nfin - this.ndeb;
    			this.prix = 0;
    			SessionFactory sessionfactory = new Configuration().configure().buildSessionFactory();
    			Session session = sessionfactory.openSession();
    			try
    			{
    				Query qry = session.createQuery("from Prix p WHERE p.Id.IdTitre = :idt");
    				qry.setString("idt",this.titre);
    				Iterator  it = qry.iterate();
    				while (it.hasNext())
    				{
    					Prix pri = (Prix) it.next();
     
    					this.prix = pri.getId().getPrix();
    				}
     
     
    			}
    			finally
    			{
    				session.close();
    			}
    			sessionfactory.close();
    	    }
    je veux afficher un etat journalier des mes ravitaillement dans une journée donnée a partir de ma page jsp dont le code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <h:outputText value="Journée : "></h:outputText><h:inputText value="#{ravitaillement.jour}" ><f:convertDateTime type="date" pattern="yyyy-MM-dd"/></h:inputText>
    <br/>
    <center><h:commandButton value="Afficher" action="#{ravitaillement.afficher}"></h:commandButton></center>
    <br/>
    <center><h:outputText  value="#{ravitaillement.msg}"></h:outputText></center>
    la base a consulter contient 2 champ pour l'essai mais chaque fois que j'appuie sur le bouton afficher le serveur me renvoit le message " pas de ravitaillement effectué dans cette journée " j'ai pa pu identifier le probleme puisque le bloc try est depassé par le compilateur a mon avis .
    puis-je avoir quelques directives ou rectification pour le fonctionnement ??

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    peux tu être plus précis, qu'est ce qui ne marche pas, une erreur? une exception ??
    Il est important de bien choisir le titre de la discussion, pas un titre générique et essayer de présenter le problème d'une manière compréhensible par tous le monde et éviter de garder ton contexte fonctionnel.

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 70
    Par défaut
    ce qui ne marche pas :

    la base contient des données concernant des ravitaillement effectué au paravant , a partir de ma page jsp je saisis la journée voulu pour degager les ravitaillements effectué durant cette journée .
    pour ce faire j'ai creer 2 classes Ravitaillement et RavitaillementBean , la premiere fait appel au constructeur de la deuxieme classe afin de creer un objet RavitaillementBean dont on trouves toutes les informations concernant le ravitaillement effectue durant cette journée .
    le probleme c'est que le serveur me rend toujours le message " pas de ravitaillement effectué cette journée " associé a la variable msg declaré comme variable globale dans la classe Ravitaillement or que c'est pas le cas puisque il existent plusieurs ravitaillement effectue durant la journée demandé .
    pour cette raison j'ai demandé quelques rectification et quelques directives
    sache que j'utilise comme API de persistance HIbernate et que les classes RvtDAO et Rvt ont été crée par ce dernier et voila leur code :
    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
    public class Rvt extends BaseRvt {
    	private static final long serialVersionUID = 1L;
     
    /*[CONSTRUCTOR MARKER BEGIN]*/
    	public Rvt () {
    		super();
    	}
     
    	/**
             * Constructor for primary key
             */
    	public Rvt (stt.RvtPK id) {
    		super(id);
    	}
     
    	/**
             * Constructor for required fields
             */
    	public Rvt (
    		stt.RvtPK id,
    		java.lang.Integer dNRvt,
    		java.lang.Integer mle,
    		java.util.Date dtRvt,
    		java.lang.String loginCreateur,
    		java.util.Date dateCreation,
    		java.lang.String loginModificateur,
    		java.util.Date dateModification) {
     
    		super (
    			id,
    			dNRvt,
    			mle,
    			dtRvt,
    			loginCreateur,
    			dateCreation,
    			loginModificateur,
    			dateModification);
    	}
     
    /*[CONSTRUCTOR MARKER END]*/
    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
    package stt.dao;
     
    import org.hibernate.Session;
     
    import stt.base.BaseRvtDAO;
     
     
    public class RvtDAO extends BaseRvtDAO implements stt.dao.iface.RvtDAO {
     
    	public RvtDAO () {}
     
    	public RvtDAO (Session session) {
    		super(session);
    	}
     
     
    }
    j'espere que j'ai bien expliqué le probleme et merci pour votre collaboration

  4. #4
    Membre expérimenté

    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut
    Bonjour,

    Personnellement, je me demande si ton problème ne viendrait pas de ta date dans la base de données.
    Dans ta méthode afficher, tu fais appel a la méthode findAll puis tu fais une boucle pour chaque élément, tu devrais regarder s'il passe bien ou non dedans (pour déterminer si ton accès a la base est correct et qu'il récupère la liste complète).

    Ensuite, et c'est la je pense que le problème peux se situer la, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (lbcn.getDtRvt().equals(this.jour))
    Ici, tu indiques qu'il faut que la date en base soit exactement la même (millisecondes comprise) a celle que tu demandes dans ta jsp, tu devrais logger ta date de ta jsp et celle de ta base pour voir si elles devraient ou non correspondre.

    Si le problème vient de la, tu as 2 solutions :
    - Utiliser les méthodes before et after de la classe Date
    - Utiliser les greater et less d'Hibernate pour gérer ta recherche par date (ce que je préconiserais)

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 70
    Par défaut
    j'ai mis la condition sur le matricule pour verifier si le probleme est lié a la date ou non mais le probleme persiste encore donc a mon avis je crois que le probleme existe avant cet etape durant l'acces a la base parceque le console me renvoit l'information suivante :

    INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par Emir83 Voir le message
    j'ai mis la condition sur le matricule pour verifier si le probleme est lié a la date ou non mais le probleme persiste encore donc a mon avis je crois que le probleme existe avant cet etape durant l'acces a la base parceque le console me renvoit l'information suivante :

    INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
    C'est un message informatif, pas une erreur. mais, tu peux être plus précis et concis, n'oublie pas que les utilisateurs passent moins d'une minute à lire une discussion, donc, au lieu d'essayer d'expliquer ton contexte fonctionnel (Ravitaillement ...) peux tu aller direct au but, la requete exécutée? ce qu'elle aurait du retourner ? et s'il y'a des erreurs de logs.
    utilise ton débugger pour voir le résultat de la requete avant de faire le traitement, ou l'affichage coté jsp.

Discussions similaires

  1. Votre avis : ActiveX Data Object ou Data Access Object ?
    Par jfdmagic dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 21/04/2009, 09h36
  2. Data access layer (DAL) en DotNet
    Par Wurlitzer dans le forum Oracle
    Réponses: 1
    Dernier message: 18/08/2006, 01h17
  3. access Object Ole
    Par adil_math2006 dans le forum Access
    Réponses: 3
    Dernier message: 30/05/2006, 18h19
  4. Direct Access Object sous Delphi
    Par eponette dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 14h33
  5. [Data Access Object]Intérêt de la factory ?
    Par le Daoud dans le forum Général Java
    Réponses: 2
    Dernier message: 21/04/2005, 09h06

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