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 :

Hibernate améliore-t-il la performance ?


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 75
    Points : 39
    Points
    39
    Par défaut Hibernate améliore-t-il la performance ?
    Bonjour,

    Ma question est tte simple, sa réponse par contre peut nécessiter qlqs lignes de plus.

    Je me demande si l'utilisation du mapping O/R basé sur Hibernate améliore la performance d'une application.

    An effet, travaillant sur une appli Java/J2ee, je reçois régulierement des plaintes dénonçant la "lenteur" de l'appli. J'envisage donc plusieurs solutions dont celle de construire une couche DAO à la base d'Hibernate.

    Pensez que cela contribuerait à l'amélioration de la performance de l'application?

    Merci d'avance !

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

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Je ne pense pas que l'on puisse donner une réponse définitive à ta question.
    D'un côté, Hibernate est une surcouche de JDBC, donc en thérorie, ça ne peut pas être plus rapide.
    D'un autre côté, Hibernate peut être utilisé avec des systèmes de caches ce qui peut améliorer un peu les perfs.
    Pour moi, si ton problème n'est lié qu'aux performances, Hibernate n'est pas la bonne solution.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 75
    Points : 39
    Points
    39
    Par défaut
    Merci pour ta réponse fr1man

    Oui c'est principalement un problème de performance. Personnellement je croyais que l'utilisation du mapping O/R qui réduit (corrigez moi si je me trompe) le nombre d'accès à la BD en persistant les données en mémoire (? à ma connaissance), pourrait eventuellement améliorer la performance de mon appli.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Quand il s'agit d'améliorer les performances, il ne faut jamais se mettre dans l'idée de toucher au code en premier. Il faut d'abord comprendre ou se situe le ou les problèmes. En fonction de ces découvertes, les bonnes décisions pourront être prises.
    Est-ce un problème réseau ? La machine qui supporte la base de données est surchargée ? sous-dimensionnée ? etc...etc...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 75
    Points : 39
    Points
    39
    Par défaut
    je suis tout à fait d'accord avec vous !

    En effet, je m'occupe de la partie logicielle de l'application, par conséquent je dois apporter des explications pour affirmer ou infirmer le fait que la cause est la qualité du code produit ou l'architecture logicielle adoptée

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Personnellement je croyais que l'utilisation du mapping O/R qui réduit (corrigez moi si je me trompe) le nombre d'accès à la BD en persistant les données en mémoire (? à ma connaissance)
    Cela peut réduire les accès à la base en utilisant les caches de niveau 1 et 2.
    D'un autre coté, en JDBC pure, je suppose que si tu as besoin du numéro de ton client dans deux requêtes successives, tu vas garder le numéro en mémoire après le premier select et non faire deux select identiques.
    Ceci dit, ça ne réduit pas les insert, update, delete, ça peut même les augmenter, selon comment à été faite l'application.

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par mrjeronimo Voir le message
    je suis tout à fait d'accord avec vous !

    En effet, je m'occupe de la partie logicielle de l'application, par conséquent je dois apporter des explications pour affirmer ou infirmer le fait que la cause est la qualité du code produit ou l'architecture logicielle adoptée
    Dans ce cas, je te donne une idée : une première approche par log des différents temps de traitements sur les différentes couches de l'appli. C'est suffisant et rapide pour cerner les gros bloc principaux qui posent problème. Mais attention à ne pas multiplier les logs de temps de réponse, car ça deviendrait vite le bazar dans le code. C'est seulement une "macro-approche".
    Ensuite, il est possible d'identifier le code responsable, faire des tests unitaires et mettre au pilori le pauvre développeur qui à l'époque n'avait eu que quelques minutes pour coder 10000 lignes
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 75
    Points : 39
    Points
    39
    Par défaut
    Merci bcp pour vos réponses,

    En résumé, je réctifie l'idée que le mapping O/R contribuera à l'augmentation de la performance (il me servira surtt pour mieux modulariser mon appli). D'autre j'utiliserai des logs pour obtenir des infos sur les temps de réponse par couche logicielle.

    J'espère que ça me donnera une idée plus précise sur ce prob de perfs assez aberrant

  9. #9
    Membre averti Avatar de ZeRevo
    Inscrit en
    Avril 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2007
    Messages : 302
    Points : 343
    Points
    343
    Par défaut
    Avant de trouver une solution, il faut isoler ton problème.
    Il faut commencer par valider la partie hardware pour s'assurer que le réseau et fiable et performant puis il faut valider la partie d'accès à la bdd (gestion des transactions...) et enfin le code en lui même.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Points : 468
    Points
    468
    Par défaut Optimisation performances Hibernate
    Bonjour,

    Tout dépend en fait de l'utilisation que l'on fait d'Hibernate. Le simple fait d'utiliser Hibernate ne va pas automatiquement améliorer les performances des accès aux données (c'est du SQL qui est généré au final).
    Par contre, il est vital de bien comprendre comment Hibernate fonctionne, et pour améliorer les performances il faut :
    - définir une "fetching strategy", c'est à dire pour chaque "use case" (chaque fonctionalité de l'application), choisir une manière optimale de récupérer les données en fonction de ce qu'on va en faire. Faut-il charger les données en "lazy" (si par exemple seule ne petite partie du graphe va être utilisé) ? Au contraire en "eager" ? En utilisant la fonctionnalité de "batch" (si on va afficher les données 10 par 10) ?
    - utiliser le caching, tout en gardant à l'esprit que le caching de second niveau n'est utilisable que pour les données qui changent rarement, comme par exemple les données d'un outil de content management, qu'on peut invalider (au niveau du cache) toutes les 30 minutes.
    Bref, les options sont nombreuses et plutôt complexes.
    Le meilleur ouvrage sur Hibernate est sans aucun doute celui là :
    http://www.manning.com/bauer2/

    Il apporte des explications pour utiliser Hibernate de manière optimale.

    Stéphane

Discussions similaires

  1. Améliorer performance Hibernate
    Par absurde dans le forum Hibernate
    Réponses: 1
    Dernier message: 25/11/2011, 14h42
  2. Hibernate et HSQLDB - pb de performances
    Par tatia34 dans le forum Hibernate
    Réponses: 1
    Dernier message: 05/09/2007, 16h29
  3. Améliorer les performances d'Hibernate
    Par minimarch76 dans le forum Persistance des données
    Réponses: 4
    Dernier message: 22/08/2007, 10h01
  4. [IW][D7] améliorer les performances
    Par Magnus dans le forum Bases de données
    Réponses: 19
    Dernier message: 11/10/2005, 20h46

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