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

JPA Java Discussion :

[JPA] [EJB3] Count sur une propriété d'un bean entité


Sujet :

JPA Java

  1. #1
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut [JPA] [EJB3] Count sur une propriété d'un bean entité
    Je travaille avec EJB3 et je dispose d'un bean entité Question.

    Un objet Question peut avoir plusieurs réponses et je voudrais connaitre le nombre de réponse qu'il peut y avoir à une question.

    Aujourd'hui, j'ai définis le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	@Transient
    	public Integer getAnswersCount() {
    		return getAnswers().size();
    	}
    le seul truc, c'est que c'est pas optimisé du tout. Il y a bien l'annotation @Formula de hibernate, mais j'aimerais plutot un truc pur EJB3 (en plus j'ai pas réussi à faire marcher l'annotation d'hibernate...).

    Y a-t-il un moyen à partir de mon bean de faire une requête EJBQL pour faire le count ?

  2. #2
    Membre confirmé
    Avatar de bmoussaud
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 218
    Points : 555
    Points
    555
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @Transient
    	public Integer getAnswersCount() {
    		return getAnswers().size();
    	}
    le seul truc, c'est que c'est pas optimisé du tout
    Sur quels critères ce code n'est pas performant ? Il faut toujours se méfier des optimisation 'a priori'.
    Le code que tu vas rajouter ne va-t-il pas à la fin être plus long à s'executer que le code originel , tres facile à lire.
    L'optimisation est une conséquence d'un profiling pendant un test de performance en condition de production.

  3. #3
    Membre actif Avatar de a.snaps
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 209
    Points : 241
    Points
    241
    Par défaut
    Vois en effet ma réponse à ton autre post ici:
    http://www.developpez.net/forums/sho...wpost&t=278131

    Parce que si c'est pour une collection de quelque entitées...
    Et même, à voir avec ton Provider de peristence JPA, car comme je te disais, je me demande ce qui est véritablement chargé si tu ne fais qu'un appels à size()... Je pense que les éléments de la Collection ne sont instancié qu'en cas d'itération... Par savoir il te suffit de demandé de voir les query SQL
    Alex

  4. #4
    Membre confirmé
    Avatar de bmoussaud
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 218
    Points : 555
    Points
    555
    Par défaut
    Je pense que les éléments de la Collection ne sont instancié qu'en cas d'itération...
    Exact. Par défaut, dans la manipulation des collections ,les outils ORM (type hibernate, kodo,...) ne travaille qu'avec les ID des objets de la collection, le chargement complet de l'objet n'interviendra que sur un appel du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Answer  c = getAnswers().iterator.next();
    c.getBonneReponse() /** <-- le chargement complet doit se faire ici , avec une requete du type SELECT * from T_ANSWER where ID = ?*/

  5. #5
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Ok merci pour les précisions. J'avais la mauvaise impression que le getAnswers() rappatriait forcément tous les éléments.
    Je vais regarder au niveau du SQL ce qui se passe vraiment et si size() appelle un count.

    Merci en tout cas. Je vais quand même regarder du coté de Formula, ça semble intéressant.

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

Discussions similaires

  1. Création tag avec test sur une proprièté d'un bean
    Par Didine981 dans le forum Struts 1
    Réponses: 1
    Dernier message: 04/06/2009, 22h08
  2. Count sur une propriété d'un bean entité
    Par dmetzler dans le forum JSF
    Réponses: 11
    Dernier message: 14/02/2007, 21h35
  3. Réponses: 12
    Dernier message: 12/06/2006, 14h29
  4. probleme sur count sur une base differente
    Par webisa dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/07/2005, 05h32
  5. un count sur une jointure et ca ne fonctionne pas
    Par elbronziero dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/10/2004, 11h23

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