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

Persistance des données Java Discussion :

Relation et navigation entre 2 entités [Débutant(e)]


Sujet :

Persistance des données Java

  1. #1
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut Relation et navigation entre 2 entités
    Bonjour voici mes deux entiter que j'ai implaimenter
    comme je suis débutant dans le domaine des ORM

    je voudrais juste confirmer que ces les bonne configuration pour la relation entre les 2 table (entités) et que j'ai utiliser les bonne annotation ?

    voilà la relation que je veux exprimer :
    entité1 :Wilaya
    --------
    id(pk)
    libelle

    entité2: Daira
    --------
    id(pk)
    libelle
    wilayaId(fk)

    les entités :
    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
     
    @Entity
    @Table(name = "t_wilaya")
    //@NamedQuery(name = "findAllWilaya", query = "SELECT b FROM t_wilaya b")
    public class Wilaya implements Serializable
    {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE)
        private Long id;
     
        @Column(nullable = false)
        private String codeWilaya;
     
        @Column(nullable = false)
        private String libeller;
     
        @OneToMany(mappedBy = "wilaya",fetch= FetchType.EAGER,cascade= CascadeType.ALL)
        private List<Daira> dairas;
     
    /* *********Geteur and Setter******** */
    .....  
    /* ******************************** */   
    }
    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
     
    @Entity
    @Table(name = "t_daira")
    //@NamedQuery(name = "findAllDaira", query = "SELECT b FROM t_daira b")
    public class Daira implements Serializable
    {
     
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE)
        private Long id;
        @Column(nullable = false)
        private String libeller;
        @OneToOne(fetch = FetchType.EAGER)
        @JoinColumn(name = "wilaya_fk", nullable = false)
        private Wilaya wilaya;
     
        /*********Setteur and Getter**********/
    ....
        /* ************************** */
    }
    aussi j'ai voulu faire une petite conception de mon IHM qui permet de saisir et de persister met Wilaya et Daira :

    comme il y un attribue de Wilaya dans l'entité Daira
    @OneToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "wilaya_fk", nullable = false)
    private Wilaya wilaya; [en faite je ne comprant pas pour quoi en doit mettre cette atribue ?]

    et qu'il y a un attribut de type liste<Daira> dans l'entité Wilaya
    @OneToMany(mappedBy = "wilaya",fetch= FetchType.EAGER,cascade= CascadeType.ALL)
    private List<Daira> dairas;

    comment je voir mon IHM j'ai deux page une pour saisie les Wilay une autre pour saisie les Daira, !!? Comment je peux gérais le fait qu'il y que un certain nombre de Daira qui sont contenu dans une Wilaya. (Liste déroulant dynamique pour les deux pages ??)

    Merci d’avance de votre éclaircissement (j'ai beaucoup besoin)

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 453
    Points : 883
    Points
    883
    Billets dans le blog
    5
    Par défaut
    Dans l'ensemble, c'est bon. Sauf que en général, on utilise l'objet Set plutôt que List.

    Ensuite, car Hibernate pompe tout, il est intéressant de couper avec Fetch.
    Fetch.Eager indique de tout charger. Fetch.Lazy indique de ne pas charger (sauf besoin). Mais ça, c'est une autre histoire.

  3. #3
    Membre confirmé
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 354
    Points : 497
    Points
    497
    Billets dans le blog
    1
    Par défaut
    je voudrais juste confirmer que ces les bonne configuration pour la relation entre les 2 table (entités) et que j'ai utiliser les bonne annotation ?
    Il me semble que junit sert à ça, tester pour voir si ça marche.

    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
    import org.junit.Test;
    import javax.persistence.Persistence;
    import javax.persistence.PersistenceException;
     
    public class TableGenerationTest {
     
        @Test
        public void createTableTest() {
     
            System.out.println("\n\n\n\tcreateTableTest\n");
     
            try {
                Persistence.createEntityManagerFactory("maPU");
            } catch (PersistenceException pe) {
                 System.out.println(pe.getMessage())
            }
        }
    configure dans ton persistence.xml vers une base de données sur le systeme genre mysql et tu matte le résultat.

  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
    J'aurais 2 remarques sur ton mapping:
    1-A la place du OneToOne j'aurais mis du ManyToOne
    2-Tu as opté la stratégie de sequence, mais je ne vois où le nom de cette séquence, cette séquence existe t'elle en base?
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  5. #5
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    Pour la strategy je ne vois pas ce que tu veux dire (j'ai peut-être male fait quelque chose) mais pour moi sa suffit pour la gestion du @id séquentiellement.

    Dit-moi si ces pas le cas.

Discussions similaires

  1. les propriétés de navigation entre les entités
    Par midialzer dans le forum Silverlight
    Réponses: 0
    Dernier message: 13/08/2012, 15h00
  2. Attribut dans une relation entre deux entités
    Par garzouille dans le forum Django
    Réponses: 1
    Dernier message: 08/07/2008, 10h16
  3. MCD - une relation entre 3 entités
    Par fanette dans le forum Schéma
    Réponses: 6
    Dernier message: 23/11/2006, 20h17
  4. [DEBUTANT][MCD] Quelle relation entre 2 entités ?
    Par Ice-tea dans le forum Schéma
    Réponses: 1
    Dernier message: 18/10/2006, 22h03
  5. Réponses: 1
    Dernier message: 26/04/2006, 13h33

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