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 :

Séparation des couches avec Hibernate


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2007
    Messages : 26
    Par défaut Séparation des couches avec Hibernate
    Bonjour à tous.

    J'ai survolé quelques uns des postes, et je tourne en rond alors je pose ma question.
    J'ai un package ....entity qui contient toutes mes classes (pojo) et les fichiers xml pour hibernate.
    J'ai créé un package ....mesobjets ou j'ai mis pour chacun des pojo une classe de même nom qui hérite du pojo. Le but est de séparer la partie définition des tables, et la partie définition des méthodes.
    Dans mon Test.java, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	public static void main(String[] argvs) {
    		....entity.IrDateExecutionProjet dateExec = null;
    		Session session = HibernateUtil.getSession();
    		Transaction transaction = session.beginTransaction();
    		for (int i = 0; i < 10; i++) {
    			dateExec = new ....entity.IrDateExecutionProjet(new Date());
    			session.save(dateExec);
    		}
    		transaction.commit();
    	}

    Ca marche nickel.
    Par contre dès que je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	public static void main(String[] argvs) {
    		....mesobjets.IrDateExecutionProjet dateExec = null;
    		Session session = HibernateUtil.getSession();
    		Transaction transaction = session.beginTransaction();
    		for (int i = 0; i < 10; i++) {
    			dateExec = new ....mesobjets.IrDateExecutionProjet(new Date());
    			session.save(dateExec);
    		}
    		transaction.commit();
    	}

    Ça ne marche plus. J'ai essayé plusieurs possibilité sans en trouvé de bonne.
    Je précise que je ne souhaite pas créer une autre table ni rien de ce genre. Je ne veux pas non plus rajouter des champs, juste des méthodes complexes plutôt métiers.

    Merci d'avance à vous,

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Désolé mais je n'ai rien compris à ton problème.

  3. #3
    Membre averti

    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2007
    Messages : 26
    Par défaut
    Quelle réactivité...
    Bon ben, je crois que j'ai trouvé.
    Je vais mieux expliquer pour que si ca arrive à quelqu'un il saura ce qu'il faut faire...
    Mon but :
    Avoir une classe ....entity.Adresse.java avec la définition nécessaire pour en faire un pojo (equals, hashCode, constructeur, getter/setter).
    Avoir un fichier de description ....entity.Adresse.hbm.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
    <?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="....entity.Adresse" table="adresse">
            <id name="idAdresse" type="java.lang.Integer"
                column="id_adresse">
                <generator class="increment" />
            </id>
            <property name="adresse" type="java.lang.String" />
            <property name="cp" type="java.lang.String" />
            <property name="ville" type="java.lang.String" />
            <many-to-one name="societaire" class="....entity.Societaire"
                column="id_societaire" />
            <many-to-one name="dateExecutionProjet"
                class="....entity.IrDateExecutionProjet"
                column="id_date_execution_projet" />
        </class>
    </hibernate-mapping>
    Et une classe java ....mesobjets.Adresse.java qui extends de ....entity.Adresse.java qui permettra de définir des méthodes qui me serviront pour le métier.
    Il faut savoir que si ....mesobjets.Adresse.java n'a pas besoin de méthode, seul le constructeur par défaut y sera définit.

    J'espère avoir été plus claire.

    Alors maintenant, comment j'ai résolu ca.
    En réalité, j'ai attaqué le problème du mauvais coté.
    Pour le mapping ce que je faisais :
    hibernate.cfg.xml contenait la ligne :
    <mapping resource=".../entity/Adresse.hbm.xml" />
    Ce fichier contenait le code vu plus haut afin de définir le mapping.
    hibernate -> entity.Adresse.hbm.xml->entity.Adresse.java

    mesobjets.Adresse.java extends entity.Adresse.java
    Lorsque dans mon test j'utilisais mesobjets.Adresse.java ca plantait, alors qu'avec entity.Adresse.java ca marchait. J'ai tenté de définir un
    <mapping resource=".../mesobjets/Adresse.hbm.xml" /> sans succes etc...

    Ce qu'il faut faire :
    <mapping resource=".../entity/Adresse.hbm.xml" />
    Ce fichier doit contenir le code vu plus haut avec une petite modif afin de faire
    hibernate -> entity.Adresse.hbm.xml -> mesobjets.Adresse.java

    mesobjets.Adresse.java extends entity.Adresse.java ce qui fait que l'objet mappé est bien mesobjets.Adresse mais c'est bien la ou je définirais mes méthodes métiers.
    Voici le code modifié pour pointer vers des objets qui hérite de pojo mais qui sont pour l'instant quasi vide.
    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
    <?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="....mesobjets.Adresse" table="adresse">
            <id name="idAdresse" type="java.lang.Integer"
                column="id_adresse">
                <generator class="increment" />
            </id>
            <property name="adresse" type="java.lang.String" />
            <property name="cp" type="java.lang.String" />
            <property name="ville" type="java.lang.String" />
            <many-to-one name="societaire" class="....mesobjets.Societaire"
                column="id_societaire" />
            <many-to-one name="dateExecutionProjet"
                class="....mesobjets.IrDateExecutionProjet"
                column="id_date_execution_projet" />
        </class>
    </hibernate-mapping>
    Et ca marche...

    J'ai donc bien un POJO et une classe qui en hérite afin de séparer les couches.

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

Discussions similaires

  1. [Data] Gestion des couches avec Spring
    Par Jacobian dans le forum Spring
    Réponses: 3
    Dernier message: 08/06/2008, 22h03
  2. Réponses: 3
    Dernier message: 26/12/2007, 10h34
  3. Modification des données avec hibernate
    Par kadel dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 10/08/2007, 14h29
  4. modifier des informations avec hibernate
    Par gentil dans le forum Hibernate
    Réponses: 4
    Dernier message: 13/04/2007, 12h59
  5. [Design] Séparation des couches
    Par brousaille dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 17
    Dernier message: 16/03/2005, 21h34

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