en termes simples, l’un ?
Réponses
Trop de publicités?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
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.
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 ().
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.