2011-03-04 3 views
3

Ceci est une question de base sur Hibernate Caching, mais je dois être sûr avant d'aller de l'avant. Je devais utiliser query avant la mise en cache dans de petits projets, mais maintenant je suis impliqué dans un grand projet, c'est donc:Quand utiliser la mise en cache Hibernate (deuxième niveau)?

Dans les projets vraiment grands (au niveau national) quelles sont vos suggestions quant à son utilisation dans Hibernate Query Mise en cache?

Note: * La plate-forme est Struts2, Spring3, Hibernate, java6 WAS6 *

Répondre

1

Je vous crois dire cache de second niveau, qui est cache qui couvre plus d'une session Hibernate.

Généralement, le cache de requête est utilisé pour les requêtes lourdes ou souvent accédées, pour que votre application frappe moins souvent la base de données. Je ne suis pas sûr si votre question inclut le cache d'entité, mais vous devriez certainement l'étudier aussi bien. Ce cache inclut des entités individuelles ou leurs collections indépendamment du contexte (c'est-à-dire des requêtes concrètes). Je dirais que c'est le type de cache le plus bénéfique.

Plus votre TPS ou votre nombre d'entités est important, plus vous bénéficierez d'un tel cache. Lorsque vous rencontrez quelques milliers de requêtes par transaction, extraire des entités du cache (généralement en RAM) plutôt que d'interroger la base de données et le mappage peut vous faire gagner un temps précieux.

Faites attention lorsque vous avez besoin de résultats (en ligne) 100% à jour.

Voir aussi:

Improving Performance à Hibernate docs.

1

Le cache de second niveau est utilisé, lorsque vos relations db sont complexes, dans ce cas vous savez que cliquer sur db à chaque fois sera une opération coûteuse. Les performances de l'application peuvent être augmentées en utilisant le cache dans de tels cas.

1

Je recommande fortement l'article truly understanding the second level and query caches. En général, la mise en cache présente de nombreux avantages, mais elle introduit également beaucoup de complexité, et vous devriez avoir une bonne raison pour la mise en cache, et comprendre les avantages/risques qu'elle vous apportera.

Notez que l'activation du cache de requêtes n'est pas suffisante en soi, vous devez marquer les éléments comme pouvant être mis en cache, here is an explanation. Cet article entier est vraiment bon et discute quand le cache de requête n'est pas utile. Encore une fois, assurez-vous que vous avez une bonne raison d'activer la mise en cache des requêtes dans votre application.

Questions connexes