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

Java EE Discussion :

Comment gérer les tables de lien. [EJB3]


Sujet :

Java EE

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 25
    Points : 23
    Points
    23
    Par défaut Comment gérer les tables de lien.
    Bonjour,

    Ma question concerne plus la manière de faire ou les bonnes pratiques à utiliser que la technique.

    J'ai les tables suivantes:
    Usr
    Talks
    IsTalking

    La table IsTalking permet d'avoir une discussion(Talks) partagée entre plusieurs utilisateurs(Usr) et chaque utilisateur peut suivre plusieurs discutions.

    Débutant en EJB3, je me suis servi du plugin jbosstools pour eclipse afin de générer mes ejbs à partir de ma base de données.

    Usr.java
    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
     
    @Entity
    @Table(name = "usr", catalog = "agenda")
    public class Usr implements java.io.Serializable {
     
    	private Set<IsTalking> isTalkings = new HashSet<IsTalking>(0);
    ....	
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "usr")
    	public Set<IsTalking> getIsTalkings() {
    		return this.isTalkings;
    	}
    	public void setIsTalkings(Set<IsTalking> isTalkings) {
    		this.isTalkings = isTalkings;
    	}
     
    }
    Talks.java
    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
     
    @Entity
    @Table(name = "talks", catalog = "agenda")
    public class Talks extends GenericEntity implements java.io.Serializable {
     
    	private Set<IsTalking> isTalkings = new HashSet<IsTalking>(0);
    .....
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "talks")
    	public Set<IsTalking> getIsTalkings() {
    		return this.isTalkings;
    	}
     
    	public void setIsTalkings(Set<IsTalking> isTalkings) {
    		this.isTalkings = isTalkings;
    	}
     
    }
    IsTalking.java
    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
     
    @Entity
    @Table(name = "is_talking", catalog = "agenda")
    public class IsTalking  extends GenericEntity implements java.io.Serializable {
     
    	private Talks talks;
    	private Usr usr;
    ...
    	@ManyToOne(fetch = FetchType.LAZY)
    	@JoinColumn(name = "TALKS_PK", nullable = false)
    	public Talks getTalks() {
    		return this.talks;
    	}
     
    	public void setTalks(Talks talks) {
    		this.talks = talks;
    	}
     
    	@ManyToOne(fetch = FetchType.LAZY)
    	@JoinColumn(name = "USR_PK", nullable = false)
    	public Usr getUsr() {
    		return this.usr;
    	}
     
    	public void setUsr(Usr usr) {
    		this.usr = usr;
    	}
    }
    Lorsque je veux avoir la liste des discussions pour un utilisateurs, ou dois je placer ma requete:
    Dans le dao de talks et passer par la table de liaison:
    Avec Hibernate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public List<Talks> findByUsr(Integer usrPK){
    return sessionFactory.getCurrentSession().createCriteria(Talks.class).
    addOrder(Order.desc("lastMessage"))
    .createAlias("isTalkings","it")
    .createAlias("it.usr", "usr")
    .add(Restrictions.eq("usr.pk", usrPK))
    .list();
    }
    Ou bien dans le dao de IsTalking mais je ne sais pas comment faire.

    Si on utilise la première méthode, les dao de IsTalking ne servent donc qu'a faire des créations et des suppressions ?

    Il y a t'il une meilleure manière de faire?

    Merci par avance.

  2. #2
    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
    Une hql du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select talk from Talk as talk, talk.isTalkings as it where it.usr.pk = :usrPK
    ferait l'affaire non?
    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..."

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    bonjour,

    Oui, c'est ce que je fait avec les criterias.

    Je vais donc continuer comme ça.

    Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/08/2014, 20h03
  2. [ZF 1.10] comment gérer les acces aux tables/rows?
    Par speed034 dans le forum Zend_Db
    Réponses: 0
    Dernier message: 17/06/2012, 03h31
  3. [MySQL] Comment gérer les ' et " dans une table pour exporter en excel
    Par morgan47 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/11/2011, 19h42
  4. [webBrowser] Comment gérer les liens hypertextes?
    Par Sunsawe dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/07/2007, 13h15
  5. [DAO] Comment gérer les liens avec la bdd dans mes classes?
    Par Wormus dans le forum Autres
    Réponses: 6
    Dernier message: 22/02/2006, 16h14

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