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 :

Petit problème de lien avec hibernate


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut Petit problème de lien avec hibernate
    Bonjour à tous,

    Je fais une appli java en utilisant hibernate. J'ai crée un fichier hibernet.cfg.xml dans lequel j'ai mentionné les informations relatives à la connexion d'une base de données ainsi que le mapping d'une classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <mapping resource="D:\Mission.hbm.xml"/>
    Dans mon code java j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try
            {
                SessionFactory factory = new Configuration().configure(new File("D:\\hibernate.cfg.xml")).buildSessionFactory();
                Session session = factory.openSession();
     
                Mission M = new Mission(12, "AABBCC", "Réunion", "Bordeaux", "", "", true, true, false, null, null);
                session.save(M);
                session.getTransaction().commit();
            }
            catch(Exception e){
                System.out.println(e.getMessage());
            }
    L'erreur se déclenche à la toute première ligne.
    Le message retourné est : "resource: D:\Mission.hbm.xml not found" alors que je peux vous certifier qu'il est bien présent. (J'ai déjà essayé de mettre les slashs dans l'autre sens mais cela ne change rien).

    Ce qui est bizarre aussi, c'est que concernant justement cette première ligne, si je la remplace par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SessionFactory factory = new Configuration().configure("D:\\hibernate.cfg.xml").buildSessionFactory();
    (Je mets directement l'url du fichier en paramètre)

    Le message d'erreur est : "D:\hibernate.cfg.xml not found". Alors que l'adresse est la même !!

    Heeeeeeelp meee

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 72
    Points
    72
    Par défaut
    J'ai une petite remarque à te faire, ça peut ne pas t'aider mais bon je le dit quand meme
    Il ne faut pas à mon avis créer un SessionFactory pour chaque transaction car c'est trés couteux d'en créer une.
    Il faudrait donc que tu créer une classe HibernateUtil qui va créer un SessionFactory au lancement et qui contient une méthode getSessionFactory. ensuite tu crée une session pour chaque transaction comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Session session= HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction()
    Si tu à besoin d'un exemple de fichier HibernateUtil poste moi une demande.
    bon courage

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    D'accord, tout conseil est bon à prendre ^^.

    Mais concernant mon problème de chemin absolue tu ne vois pas comment je pourrais faire ? Y a pas une histoire de classpath par hasard ?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <mapping resource="D:\Mission.hbm.xml"/>
    Comme clairement indiqué, tu demande à Hibernate de charger une ressource (donc depuis ton classpath) et non pas un fichier! Pour charger un fichier, c'est file=, mais les ressouces, c'est mieux, tu peux les inclures dans tes jars par la suite. Met simplement ton mission.hbm.xml à la racine de des classes java et utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mapping resource="/mission.hbm.xml"/>

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tu ne dois pas donner de chemin absolue avec la racine de disque pour tes fichiers.
    Ton fichier de config .cfg.xml doit être dans ton classpath.
    Pour ce qui est de la déclaration de ton mapping, il faut donner package/fichier.hbm.xml.
    Lis la documentation et fais pareil.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Points : 468
    Points
    468
    Par défaut
    Pourquoi tu spécifies un chemin absolu pour tes fichiers de mapping ?
    Mets les dans le classpath.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    Merci beaucoup pour vos réponses.
    Quand vous dites que

    Ton fichier de config .cfg.xml doit être dans ton classpath.
    ça veut dire que la variable d'environnement CLASSPATH (dans windows) doit contenir le chemin absolue de ce fichier en + des autres valeurs qu'elle contient ?

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    çà veux dire qu'il doit etre avec tes .class

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    A okkkkk !
    Merci beaucoup pour votre aide.
    Je mets cet topic en "Résolu".

  10. #10
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Il vaut mieux en général éviter de définir le classpath au niveau environnement.
    Le classpath doit être défini au niveau de l'application.
    Bon ensuite dans ton cas il suffit juste de mettre ton fichier de mapping dans un package spécifique de ton appli (ou a la racine de ton projet), il sera de ce fait automatiquement dans le classpath.
    Puis ensuite d'utiliser le chemin du fichier de mapping dans le classpath au niveau dans le fichier de config
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    Ok, J'ai mis en effet mes fichiers de mapping ainsi que mon hibernet.cfg.xml dans le classpath de mon appli et ça marche pour l'instant. Est ce que lors de la compilation, ces fichiers seront automatiquement inclus dans mon .jar définitif ou est ce que mon IDE va me pondre un dossier "lib" dans lequel je vais retrouver tous mes fichiers ?

    S'ils sont inclus, si je mets mon driver de connexion jdbc dans mon classpath ainsi que mes librairies annexes, ils seront également inclus ?

    Si non, comment puis-je faire pour qu'ils le soient ?

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

Discussions similaires

  1. Problème de lien avec wsock32.dll sous g++ (mingw32)
    Par TheShadow dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 11/04/2006, 14h43
  2. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 10h46
  3. Problèmes de liens avec ODBC vars DB Oracle
    Par kmingaso dans le forum ASP
    Réponses: 1
    Dernier message: 05/09/2005, 09h51
  4. problème de liens avec API sous VC++
    Par xavynfive dans le forum MFC
    Réponses: 7
    Dernier message: 26/08/2005, 12h01

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