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 :

Modéliser la présence d'une liste d'objet dans un autre objet avec Hibernate


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 158
    Points : 89
    Points
    89
    Par défaut Modéliser la présence d'une liste d'objet dans un autre objet avec Hibernate
    Bonjour,

    Je suis nouveau sur Hibernate et j'ai une question surement bien candide (je vous donne un exemple, le modèle de donnée est bidon):

    J'ai une table Employé avec un champ clé nom et un champ poste.
    J'ai une table Outil avec deux champs clés nom et nomEmployé et un champs description.
    Je voudrais modéliser ça par les classes suivantes :
    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
     
    class Employe{
    String nom;
    String poste;
    List<Outil> outils;
     
    ...
    }
     
    class Outil{
    String nom;
    String description;
     
    ...
    }
    Donc ma classe Employe contient la liste de tout les outils référencés dans la table Outil qui porte sur le nom de l'employé.

    Pouvez-vous me faire entrevoir comment l'on peut réaliser celà avec hibernate? De plus, pourrais-je charger un employer sans construire toute la liste des outils (jusqu'à ce qu'on manipule cette liste)?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    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 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ce que tu veux faire s'appelle, dans hibernate et en db en général, une relation OneToMany (Un employé pointe vers n outil). Ceci est bien entendu faisable sans difficulité, mais plutot que d'écrire 3 pages sur comment çà marche, je vais t'inviter à lire la doc hibernate sur le sujet (Hibernate prend probablement l'exemple Parent - Children dans sa doc).

    Note que hibernate va te demander d'utiliser un "Set" plutot qu'un List, ce qui est assez logique, puisque, dans ton modèle de db, on ne peux pas avoir la même clé primaire "outil" qui pointe sur la même clé étrangère outil, il faut donc représenter l'unicité de chaque outil pour chaque employé

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    Merci pour l'éclaircissement.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    Encore une question :

    Si j'ai une interface étendant List (disons SuperList extends List), puis-je définir un attribut SuperList et le lier à Hibernate?
    La réponse naïve est non, ça ne marche pas si on essaye sans plus... Mais je me dis que ça peut être prévu, sinon c'est dommage...

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    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 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par apqmwnqmap Voir le message
    Encore une question :

    Si j'ai une interface étendant List (disons SuperList extends List), puis-je définir un attribut SuperList et le lier à Hibernate?
    La réponse naïve est non, ça ne marche pas si on essaye sans plus... Mais je me dis que ça peut être prévu, sinon c'est dommage...
    Tu peux rajouter des types de donnée dans hibernate. Mais c'est du boulot. Beaucoup de boulot surtout pour els type "Collection" ou il faut être capable de jouer avec le lazy loading.

    Le plus simple si tu veux une propriété de type "SuperList", c'est de bien scinder tes propriétés buisness de te propriétés mappées sur la db. Ainsi, tu mappe un type 'Set' ou 'List' en propriété "protected" de ton bean via hibernate, et tu crée une propriété publique de type superliste, qui , elle, n'est pas mappée sur hibernate mais est synchronisée (via ton bean) à la propriété hibernate. Tu garde l'avantage de ton type à toi, sans les emmerde de devoir le mapper toi même sur la db.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    Merci de ces infos. Je ne sais pas trop comment définir de nouveau type dans hibernate, connais-tu de la doc là dessus?

Discussions similaires

  1. [PHP 5.3] Un objet dans un autre objet
    Par nakk01 dans le forum Langage
    Réponses: 2
    Dernier message: 19/10/2009, 14h38
  2. Réponses: 9
    Dernier message: 08/01/2009, 18h08
  3. Réponses: 2
    Dernier message: 28/06/2008, 23h08
  4. Position d'objet dans un autre objet
    Par Speed41 dans le forum Delphi
    Réponses: 14
    Dernier message: 20/02/2007, 20h51
  5. Réponses: 7
    Dernier message: 10/02/2007, 05h41

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