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 :

count(*) en hibernate


Sujet :

Hibernate Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut count(*) en hibernate
    Bonjour,

    Je suis nouveau sur le forum, je n'ai pas trouvé de discussions traitant de ça, j'ai peut-être mal cherché.
    Cependant, question je pense déjà posée :

    comment faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     select count(*) from myTable
    en passant par Hibernate de manière la plus efficace possible ? (sans ramener une liste d'objets ..)

    J'ai trouvé la solution suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()
    Est-ce une bonne solution d'un point de vue performance ?

    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 54
    Par défaut
    Bonjour,

    Après une rapide rechercher sur Google :

    Tu peux faire un count en HQL : http://docs.jboss.org/hibernate/core.../queryhql.html

    Ou avec des criterias :
    http://docs.jboss.org/hibernate/core...ria-projection

    A voir quelle requête est exécuté avec des criterias...

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    Donc je peux par exemple écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    List results = session.createCriteria(myTableMappée.class)
                .setProjection( Projections.projectionList()
                    .add( Projections.rowCount() )
                    .add( Projections.groupProperty("colonne_sur_laquelle_jagrège") )
              ).list();
    super, merci !

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    il est quan même plus facile et court d'écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.createQuery("select count(*) from MonType").uniqueResult()

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    Ah oui c'est vrai mais je ne pensais pas qu'on pouvait écrire cela. Je découvre Hibernate depuis peu de temps je précise. Je voyais souvent écrit qu'il fallait d'abord récuperer la liste des élements et d'en prendre le "size()" ce qui est lourd dingue.

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    lourd sauf si t'as aussi besoin de ces éléments juste après Dans ce dernier cas on évite un requete :p

  7. #7
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    Je ne sais pas trop pourquoi je pensais que celà ne marchait pas, j'ai pourtant lu des sujets qui parlait de ramener la liste juste pour sa cardinalité.
    Bref, j'ai tout simplifié, je retiens la possibilité de manipuler la projection d'une requete, j'avais zappé le sujet dans la doc hibernate (c'est mal de survoler les docs ).

    Merci.

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 13/10/2009, 17h31
  2. Réponses: 0
    Dernier message: 24/10/2008, 14h35
  3. Réponses: 1
    Dernier message: 10/10/2008, 10h39
  4. Count avec Hibernate
    Par inseaiste dans le forum Hibernate
    Réponses: 5
    Dernier message: 06/10/2008, 17h16
  5. Réponses: 2
    Dernier message: 03/10/2008, 16h09

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