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 !
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