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 :

[Cache et perf]


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Par défaut [Cache et perf]
    J'utilise Hibernate3.0 (Persistence EJB3.0 avec annotation) en dehors d'un serveur d'application pour apprendre.

    soit le code suivant qui fait une pauvre requète select sur une table Salesman avec une jointure OneToOne sur une autre table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Session session = HibernateUtils.getSession();
     
    List<Salesman> salesmen = session.createQuery("from Salesman").list();
     
    session.close();
    return salesmen;
    si j'ai le paramètrage:
    hibernate.connection.pool_size 0
    Le temps pour ma requète est de 5 sec (innacceptable)

    si je mets
    hibernate.connection.pool_size 1
    J'ai beau changer les valeurs dans la base, j'ai toujours le même resultat (le 1°)

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    La propriété hibernate.connection.pool_size permet de régler la taille du pool de connexions. Le pool n'agit pas sur la performance des requêtes mais sur l'obtention d'une connexion à la base de données.

    Combien d'enregistrements cette requête devrait-elle te renvoyer ?
    As-tu exécuter la même requête en sql directement sur la base pour voir si le problème ne vient pas de la base ?

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Par défaut
    c'est une base de tests avec 6 enregistrements!!

    J'ai fait afficher les requètes que j'ai directement executé sur ma base (MySQL) et c'est immediat!!

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Par défaut
    mais je me demandais, vu le nombre de dépendance qu'il y a (ProXool, ehCach C3PO, etc...) peut être qu'il me manque une jar dans mes dépendances??

    En tout cas, vu qu'Hibernate est beaucoup utilisé, j'imagine que niveau perf, ça assure un minimum!!??

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Ta base est-elle sur le même poste que ton appli ?

    Hibernate n'est pas en cause pour ce problème de perf.
    J'ai déjà récupéré plusieurs milliers d'enregistrements dans des temps tout à fait corrects.

    S'il te manquait quelque chose tu aurais une erreur dans tes logs.
    Les jars que tu viens de citer concernent les pools de connexion et la gestion du cache. Ces fonctionnalités ne sont pas indispensables pour "tester" Hibernate.

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Par défaut
    ça me rassure alors!!

    non, ma base n'est pas sur la même machine!

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Par défaut
    par contre, j'ai un truc étrange dans les requètes générés, c'est que j'ai la première requète qui va chercher mes "commerciaux" puis j'ai une requète par enregistrement pour faire la jointure sur la 2° tables!!??

    J'aurai plutot imaginé une seule requète!!??

    mon objet:
    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
     
    public class Salesman {
    @Id
      public int Id;
     
    ...
     
    //la jointure
        @OneToOne(cascade = CascadeType.ALL) //???
        @JoinColumn(name = "addressId")
        @NotFound(action = NotFoundAction.IGNORE)
        public Address getAddress() {
            return address;
        }
     
    }

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

Discussions similaires

  1. Répertoire caché
    Par KUBITUS dans le forum Delphi
    Réponses: 30
    Dernier message: 13/04/2007, 07h19
  2. Ouvrir (fopen) un fichier caché
    Par shef dans le forum C
    Réponses: 2
    Dernier message: 09/09/2002, 09h06
  3. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49
  4. Webbrowser : Comment ne pas prendre la page en cache
    Par cedm78 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 30/08/2002, 11h17

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