261 votes

Ce qui est premier et deuxième niveau mise en cache dans la mise en veille prolongée ?

en termes simples, l’un ?

314voto

Dennis Cheung Points 11818

1.1) cache de Premier niveau

Cache de premier niveau toujours Associés avec l' objet de la Session. Hibernate utilise ce cache par défaut. Ici, il traite un transaction, l'un après l'autre, signifie l'habitude de traiter une transaction de nombreux fois. Principalement, il réduit le nombre de requêtes SQL, il doit générer à l'intérieur d'une transaction donnée. C'est plutôt de la mise à jour après chaque modification effectuée dans la transaction, il met à jour la transaction seulement à la fin de la transaction.

1.2) le cache de Second niveau

Le cache de Second niveau toujours associés avec la Session de l'Usine de l'objet. Lors de l'exécution de transactions, entre les deux il charge le les objets lors de la Session niveau de l'Usine, de sorte que ces objets seront disponible à l'ensemble de l'application, qui n'est pas lié à un seul utilisateur. Depuis les objets sont déjà chargés dans le cache, chaque fois qu'un objet est retournées par la requête, à l'époque, pas besoin d'aller pour une base de données des transactions. De cette façon, le cache de second niveau œuvres. Ici, nous pouvons utiliser requête de mémoire cache de niveau aussi. Plus tard, nous allons discuter de ce sujet.

Cité: http://www.javabeat.net/articles/37-introduction-to-hibernate-caching-1.html

121voto

lomaxx Points 32540

Theres une assez bonne explication du premier niveau de mise en cache sur le blog de Rationaliser logique

Bascially, première mise en cache niveau arrive sur une base par session alors que le deuxième niveau de mise en cache peut être partagé sur plusieurs sessions.

116voto

Creditto Points 31

Voici quelques explication de base de hibernate cache...

Premier niveau de cache est associé à une "session" de l'objet. Le champ d'application des objets de cache de session. Une fois la session fermée, la mise en cache des objets ont disparu à jamais. Premier niveau de cache est activé par défaut et vous ne pouvez pas le désactiver. Lorsque nous requête d'une entité premier temps, il est extrait de la base de données et stockées dans la première mémoire cache de niveau associé à la session hibernate. Si nous requête même l'objet de nouveau avec le même objet session, il sera chargé à partir du cache et pas de requête sql est exécutée. Le chargé de l'entité peut être retiré de session à l'aide de evict() la méthode. Le prochain chargement de cette entité sera à nouveau faire une base de données d'appel s'il a été supprimé à l'aide de evict() la méthode. L'ensemble de la session cache peut être retiré à l'aide de méthode clear (). Il va supprimer toutes les entités stockées dans le cache.

Cache de Second niveau est en dehors de la première mémoire cache de niveau qui est disponible pour être utilisé à l'échelle mondiale dans la session de l'usine de portée. cache de second niveau est créé dans la session de l'usine de portée et est disponible pour être utilisé dans toutes les sessions qui sont créés à l'aide de cette session particulière de l'usine. Cela signifie également qu'une fois la session de l'usine est fermée, toutes les cache associé à mourir et le gestionnaire de cache également fermé. Chaque fois que la session hibernate vous essayez de charger une entité, le très premier lieu, il regarde pour la copie mise en cache de l'entité dans la première mémoire cache de niveau (associé avec notamment la session hibernate). Si la copie mise en cache de l'entité est présente dans le premier niveau de cache, il est retourné comme résultat de la méthode de chargement. Si il n'y a pas d'entité dans le cache de premier niveau de cache, cache de second niveau est recherché pour la mise en cache de l'entité. Si le cache de second niveau a mis en cache d'entité, il est retourné comme résultat de la méthode de chargement. Mais, avant de retourner l'entité, il est stocké dans le premier niveau de cache également de sorte que la prochaine invocation de la méthode de chargement pour l'entité sera de retour l'entité de premier niveau du cache de lui-même, et il n'y aura pas besoin d'aller en cache de second niveau à nouveau. Si l'entité n'est pas trouvé dans le premier niveau de cache et le cache de second niveau, puis de la base de données de la requête est exécutée et que l'entité est stocké dans les deux niveaux de cache, avant de revenir en tant que réponse de la méthode load ().

3voto

Ravian Points 25

par défaut, NHibernate utilise le premier niveau de mise en cache qui est l'Objet de la Session en fonction. mais si vous vous trouvez dans un environnement multi-serveur, puis le premier niveau de cache ne peut pas très évolutif avec certains problèmes de performances. il se produit en raison du fait qu'il a de faire de fréquents voyages à la base de données comme les données sont réparties sur plusieurs serveurs. en d'autres termes NHibernate fournit une base, n'est pas si perfectionnées dans les processus de L1 cache hors de la boîte. Cependant, il ne fournit pas de fonctionnalités d'une solution de mise en cache doit avoir un impact notable sur les performances de l'application.

donc, les questions de tous ces problèmes est l'utilisation d'un cache L2 qui est associé à la session d'usine objets. il réduit le temps des voyages à la base de données si, finalement, les augmentations de l'application des temps de réponse.

-4voto

Prakash Bayas Points 1

Dans un cache de second niveau, domaine hbm fichiers peuvent être des clés mutables et la valeur false. Par exemple, dans cette classe de domaine certains de la durée dans une journée reste constante tant que la vérité universelle. Ainsi, il peut être marquée comme immuable dans l’application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X