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 :

Petites questions sur le sujet


Sujet :

Hibernate Java

  1. #21
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Faut lire les exceptions parfois, ton problème n'a rien à voir avec ton fichier de conf hibernate

    M'enfin faut savoir lever la tête du guidon et analyser un tant soit peu le problème quand tu codes, sinon t'iras pas loin


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NoClassDefFoundError: org/dom4j/DocumentException

    Signifie qu'il ne trouve pas la classe org.dom4j.DocumentException, qui se trouve être une classe utilisée dans Hibernate.

    Comme l'indique le package, cette classe est issue de Dom4J...

    Pour résumer mettre le seul jar d'hibernate dans ton classpath ne suffit pas. Hibernate dépends d'un certain nombre d'API dont Dom4j, Log4j & cie

    Si elles sont fournies dans le zip de distrib d'hibernate c'est qu'il y a bien une raison...

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Yep ca marche mieux d'autres erreurs

    Merci

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Mmm, mystique ... dans mon hibernate.cfg.xml je met:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <mapping resource="mapping/debit.hbm.xml"/>
    Dans mon main je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SessionFactory factory = new Configuration().configure(new File ("hibernate.cfg.xml")).buildSessionFactory();
            Session session = factory.openSession();
            Transaction tc = session.beginTransaction();
            Debit debit = new Debit();
            debit.setId(11);
            debit.setDebit(5666);
            session.save(debit);
            session.getTransaction().commit();
            tc.commit();
    Je cree donc un map 'debit.hbm.xml dans 'mapping/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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
     
        <class name="Debit" table="DEBIT">
    	<property name="id" type="int" column="id"/>
    	<property name="debit" type="int" column="debit"/>
        </class>
     
    </hibernate-mapping>
    Et ma classe persistente faite uniquement de get/set

    Le main me répond ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
    log4j:WARN Please initialize the log4j system properly.
    Exception in thread "main" org.hibernate.MappingNotFoundException: resource: mapping/debit.hbm.xml not found
    Pour ce qui est du warning, passons, c est surement un truc a initialiser pour avoir les log ou autre.

    Mais il dit qu'il trouve pas le fichier de map ... pourtant il a désormais bien trouver le hibernate.cfg.xml (qui est a la racine) et j'ai mit le dossier mapping a cette meme racine ... donc pas de raison qu il ne trouve pas :s

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    J' ai bien sur creer une table DEBIT dans une DB nommée DEFENSE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    -- Creation des debits utilises 
    CREATE TABLE DEBITS (
      id INT (1) NOT NULL,
      debit INT (4) NOT NULL,
      PRIMARY KEY (id)
      );
    INSERT INTO DEBITS VALUES (1, 256);
    INSERT INTO DEBITS VALUES (2, 512);
    INSERT INTO DEBITS VALUES (3, 1024);
    INSERT INTO DEBITS VALUES (4, 2048);
    Le but etant d'ajouter un debit dans mon exemple ci dessus

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Je ne comprend pas pourquoi il ne trouve pas mon fichier :s:s:s

    Il trouve bien le fichier hibernate.cfg.xml donc je pige pas :s

    Voici donc le code :
    http://rafb.net/p/hhoW5995.html

    Si quelqu un a une idée

    Merci d avance

    Je dois pas tilter un truc sur l utilisation/utilité de Hibernate :s

  6. #26
    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
    Ton fichier 'debit.hbm.xml' se trouve bien dans (src)/mapping/debit.hbm.xml ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #27
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Oui en fait je viens de comprendre. Le fichier hibernate.cfg.xml et le dossier mapping doivent se trouver non pas a la racine du projet, mais bien dans le dossier src comme dit ci dessus.

    Merci tout de meme.

    Me voilà désormais avec :

    Exception in thread "main" org.hibernate.InvalidMappingException: Could not parse mapping document from resource mapping/debit.hbm.xml

    Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from invalid mapping

    Caused by: org.xml.sax.SAXParseException: The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,....)

    J' en conclus donc que mon hbm.xml est mal construit.
    Je me plonge là dedans donc.

    Deux autres questions:

    1) utilisable avec HSQLDB ou Derby ?
    2) A premiere vue hibernate est approprié pour ajouter, supprimer, updater une base (avec a premiere vue des tables sans proprietes specifiques, les NOT NULL, PRIMARY KEY, et autres étant a premiere vue gérer par le fichier xml si je ne m'abuse?), mais pour ce qui est des SELECT?

    Je veux dire, ma BD est en fait faite de tables pour assurer la cohérence de matériels réseaux , par exemple:

    Une table interfaces , une table débit, et une table interface_debit pour savoir pour telle interface quels sont les débits autorisés.
    Pour cette partie ci je suis donc obligé de bosser en DUR dans mon .sql et y inscrire toutes les compatibilités / incompatibilités. Mais ensuite dans mon appli. deux choses doivent etre faites:
    - Une fois qu'un utilisateur quitte l'application, il doit avoir la possibilité de sauvegarder les matériels, donc a ce niveau là travailler avec hibernate me semble idéal.
    - Mais pour ce qui est des select (pour tests de cohérence selon les parametres entrés), j' imagine que là il faut passer par du SQL dans tous les cas HQL a premiere vue pour hibernate? Ou hibernate apporte aussi au select une puissance que je ne connais pas?


    Merci de vos réponses.

  8. #28
    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
    Pour ton erreur de mapping
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <class name="Debit" table="DEBIT">
      <id name="id" type="int" column="id"/>    <------ pas <property> mais <id>
      <property name="debit" type="int" column="debit"/>
    </class>
    1) peux pas te répondre, connais ni l'une ni l'autre... désolé
    2) oui, hibernate ajoute pas mal de choses pour les requêtes SQL
    tu as le choix entre Criteria, Query, SQLQuery pour gérer tes requêtes ou tu peux directement mapper tes classes avec des set d'éléments liés...
    Mais bon, pour ça, il faut regarder la doc

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #29
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Yep j'avais vu ca et j'ai d ailleurs changer en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
        <class name="Debit" table="DEBIT" discriminator-value="D">
            <id name="id" column="id" type="int">
    		<generator class="increment"/>
    	</id>
    	<property name="debit" type="int" column="debit"/>
        </class>
    </hibernate-mapping>
    Mais meme résultat ... Et pour ce qui est de la doc, je la lis, mais :
    ca a l air assez complexe, donc je prefere poser mes questions avant de me lancer dedans (voir si ca en vaut vraiment la peine dans mon cas)


  10. #30
    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
    Pourquoi discriminator-value ? Tu n'en as pas besoin ici...
    Je te montre un mapping basic qui fonctionne
    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 5 mars 2007 10:26:39 by Hibernate Tools 3.1.0.beta5 -->
    <hibernate-mapping>
        <class name="hibernate.objects.Reponse" table="REPONSE">
            <id name="varMnemo1" type="string">
                <column name="VAR_MNEMO1" length="20" />
                <generator class="assigned" />
            </id>
            <property name="repVarRetour" type="string">
                <column name="REP_VAR_RETOUR" length="20" />
            </property>
            <property name="grpEquip" type="string">
                <column name="GRP_EQUIP" length="20" />
            </property>
            <property name="repTypEquip" type="java.lang.Integer">
                <column name="REP_TYP_EQUIP" precision="1" scale="0" />
            </property>
            <property name="repFreqJj" type="java.lang.Integer">
                <column name="REP_FREQ_JJ" precision="2" scale="0" />
            </property>
            <property name="repFreqHh" type="java.lang.Integer">
                <column name="REP_FREQ_HH" precision="2" scale="0" />
            </property>
            <property name="flagEcrit" type="string">
                <column name="FLAG_ECRIT" length="6" />
            </property>
        </class>
    </hibernate-mapping>
    Pour ce qui est de la complexité d'Hibernate, c'est sûr, ça ne s'apprend pas en 5 minutes, mais la doc reste indispensable...

    Bien sûr, rien ne t'empêche d'utiliser JDBC pour tout ce qui est DB, c'est peut-être plus rapide...
    Personnellement, j'adore JDBC, au moins, tu sais ce qu'il fait
    Le problème avec Hibernate, c'est que tu peux avoir des surprises en modifiant le paramétrage (lazy loading entre autre), mais bon, quand tu connais mieux, c'est plutôt sympa
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #31
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    puis je abuser, et te demander la classe persistente ainsi que le code sql de création de la table associée au mapping dont tu me parle?

    Merci d'avance si ce n est pas trop te demander ;

    Je confirme que HSQLDB fonctionne avec Hibernate.

    Pour information, HSQLDB est un SGBD embarqué, assez puissant et qui respecte le SQL standard.


  12. #32
    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
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
    la table
    =====
    CREATE TABLE reponse (
      VAR_MNEMO1 VARCHAR(20) NOT NULL,
      REP_VAR_RETOUR VARCHAR(20) NOT NULL,
      GRP_EQUIP VARCHAR(20) NOT NULL,
      REP_TYPE_EQUIP NUMERIC(1,0) NOT NULL,
      REP_FREQ_JJ NUMERIC(2,0) NOT NULL,
      REP_FREQ_HH NUMERIC(2,0) NOT NULL,
      FLAG_ECRIT VARCHAR(6) NOT NULL,
      PRIMARY KEY(VAR_MNEMO1)
    )
     
    le pojo
    =====
    package hibernate.objects;
     
    // Generated 5 mars 2007 10:26:37 by Hibernate Tools 3.1.0.beta5
     
    /**
     * Reponse generated by hbm2java
     */
    public class Reponse implements java.io.Serializable
    {
     
        // Fields    
        private String varMnemo1 = null;
        private String repVarRetour;
        private String grpEquip;
        private Integer repTypEquip;
        private Integer repFreqJj;
        private Integer repFreqHh;
        private String flagEcrit;
     
        /** default constructor */
        public Reponse()
        {
            super();
        }
     
        public String getVarMnemo1()
        {
            return varMnemo1;
        }
     
        public void setVarMnemo1(String varMnemo1)
        {
            this.varMnemo1 = varMnemo1;
        }
     
        public String getFlagEcrit()
        {
            return flagEcrit;
        }
     
        public void setFlagEcrit(String flagEcrit)
        {
            this.flagEcrit = flagEcrit;
        }
     
        public String getGrpEquip()
        {
            return grpEquip;
        }
     
        public void setGrpEquip(String grpEquip)
        {
            this.grpEquip = grpEquip;
        }
     
        public Integer getRepFreqHh()
        {
            return repFreqHh;
        }
     
        public void setRepFreqHh(Integer repFreqHh)
        {
            this.repFreqHh = repFreqHh;
        }
     
        public Integer getRepFreqJj()
        {
            return repFreqJj;
        }
     
        public void setRepFreqJj(Integer repFreqJj)
        {
            this.repFreqJj = repFreqJj;
        }
     
        public Integer getRepTypEquip()
        {
            return repTypEquip;
        }
     
        public void setRepTypEquip(Integer repTypEquip)
        {
            this.repTypEquip = repTypEquip;
        }
     
        public String getRepVarRetour()
        {
            return repVarRetour;
        }
     
        public void setRepVarRetour(String repVarRetour)
        {
            this.repVarRetour = repVarRetour;
        }
    }
    J'avais déjà entenu parler de HSQLDB, mais bon, je n'en ai aucun usage...
    Si je dois utiliser une base open source, j'utilise mySQL...
    Dans tous les cas, si j'ai le choix, je préfère DB2

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #33
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Grand merci! Je jette mon oeil à ca

  14. #34
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    J'utilise aussi MySql en général.

    Mais l'application devant tourner sur des machines sur le terrain (armée) pas très performante, il ne me semble pas trop approprié d'en + de la machine virtuelle java, ajouter un serveur mysql.

    Je pense donc que ce n'est pas un mauvais choix que de passer par un fichier

    Voilà pour la petite histoire

  15. #35
    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
    C'est clair
    Et en plus, c'est gratuit...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #36
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Pfff, toujours arrivé à rien ... :@

    Maintenant l'erreur est:

    Exception in thread "main" org.hibernate.MappingException: entity class not found: Debit


    Pourtant cette classe persistante est bien dans mon projet ... et implémente Serializable ...


  17. #37
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Dans ton exemple, dans le mapping de Reponse tu fais:

    hibernate.objects.Reponse;

    dans mon cas, le projet etant dans le package: hiberTest, je serai tenter de mettre: hiberTest.Debit

    Mais rien n y fait, entity class not found : Debit :s

  18. #38
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Pourtant: log4j me répond:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    13:30:33,914  INFO Configuration:1426 - configuring from resource: /hibernate.cfg.xml
    13:30:33,919  INFO Configuration:1403 - Configuration resource: /hibernate.cfg.xml
    13:30:34,168  INFO Configuration:553 - Reading mappings from resource : mapping/debit.hbm.xml
    13:30:34,287  INFO HbmBinder:300 - Mapping class: Debit -> DEBIT
    Il trouve bien le mapping depuis la classe Debit vers la table DEBIT

    j'en conclus donc que c est le .java (la persistent classe qu'il ne trouve pas ... qui pourtant est bien là ... )

  19. #39
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Ok trouvé

    et une autre erreur, une yeahhh

    Exception in thread "main" org.hibernate.TransactionException: Transaction not successfully started
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:100)

    Je vais y arriver mdr

  20. #40
    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
    Au moins, tu ne perds pas le moral, c'est bien
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 10h40
  2. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 15h41
  3. petite question sur le composant IBX ...
    Par vbcasimir dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/01/2005, 11h33
  4. Réponses: 3
    Dernier message: 08/12/2004, 14h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 14h49

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