2010-01-17 7 views
3

Mon application récupère un compteur de MySQL à l'aide d'un bean de source de données. Puisque toutes les pages utiliseront potentiellement le même jeu d'enregistrements chaque fois que je pourrais stocker la liste de pays en tant que liste dans un certain bean global, coffre-fort dans ce cas. Je pourrais réussir à rafraîchir la liste quand je le voudrai ... mais quand les choses deviennent plus complexes, quelle est la meilleure stratégie, la solution la plus évolutive?Mise en cache d'un ensemble de résultats

Utiliser une base de données en mémoire? Un jeu de résultats en cache de 3ème partie?

n'a pas trouvé un, probablement parce que je suis nouveau sur le sujet.

+0

Que voulez-vous dire par «plus complexe»? Que voulez-vous dire par "rafraîchir à tout moment"? Les données sont-elles modifiées à chaque fois * en externe *? – BalusC

Répondre

1

ResultSet est lié à la connexion à la base de données, c'est une construction assez éphémère, et ne convient pas à la mise en cache.

Je recommande d'utiliser EhCache pour mettre en cache vos résultats. C'est un mécanisme de cache en mémoire (avec des options pour déborder sur le disque, et des options à distribuer sur un cluster). Il s'intègre très bien avec Spring (via EhCacheManagerFactoryBean et EhCacheFactoryBean).

+0

pas beaucoup de temps pour tester, mais je vais essayer! juste vu un petit article expliquant ses bases, mais le besoin de base un peu de préparation. Quoi qu'il en soit, il est dit être évolutif et comme vous l'avez dit va bien avec le printemps. Merci! –

0

Si la liste de pays est mise à jour presque jamais, remplissez un FastMap au démarrage de l'application avec les clés de carte étant two letter country abbreviations et les valeurs étant d'autres informations que vous souhaitez stocker pour chaque pays. Sinon, utilisez un cache de base de données en mémoire tel que EhCache et Memcached.

0

Utilisez CachedRowSet. Il peut être traité comme un ResultSet, mais il n'a pas besoin de maintenir une connexion à la base de données.

Questions connexes