La fonction de mise en cache des requêtes dans le framework Hibernate peut améliorer les performances des requêtes et éviter l'exécution répétée des requêtes en mettant en cache les résultats des requêtes. Son principe de fonctionnement est une mise en cache à deux niveaux, y compris le niveau de session et le niveau global, et la mise en cache est activée via l'annotation @Cacheable. Les données mises en cache sont partagées par toutes les sessions jusqu'à ce qu'elles soient explicitement effacées ou expirées. Les méthodes permettant de vider explicitement le cache incluent session.clear() ou session.evict(), et la suppression transparente est effectuée automatiquement lorsque les résultats de la requête changent.
Mise en cache des requêtes dans le framework Hibernate
Vue d'ensemble
La mise en cache des requêtes est une fonctionnalité fournie par le framework Hibernate qui améliore les performances des requêtes en mettant en cache les résultats des requêtes. Lorsque les requêtes suivantes atteignent le cache, Hibernate renvoie les résultats directement depuis le cache au lieu de réexécuter la requête.
Comment ça marche
Le cache de requêtes d'Hibernate est un cache à deux niveaux, comprenant :
Lorsque Hibernate exécute une requête, il vérifie d'abord le cache de premier niveau. Si les résultats de la requête ne se trouvent pas dans le cache de premier niveau, il exécutera la requête et mettra en cache les résultats dans le cache de premier niveau.
Si la mise en cache des requêtes est activée, Hibernate mettra également en cache les résultats des requêtes dans le cache de deuxième niveau. Les résultats dans le cache de deuxième niveau seront partagés par toutes les sessions jusqu'à ce qu'ils soient explicitement effacés ou que le cache expire.
Cas pratique :
Supposons que nous ayons une entité Employé
et que nous exécutons fréquemment des requêtes pour trouver des employés spécifiques : Employee
实体,并且我们频繁执行查找特定员工的查询:
Query query = session.createQuery("from Employee where id = :id"); query.setParameter("id", employeeId); List<Employee> employees = query.list();
为了缓存这个查询结果,我们可以使用 @Cacheable
注解:
@Entity @Cacheable public class Employee { // ... }
这样,当我们执行相同的查询时,Hibernate 会先从缓存中查找结果。如果缓存中没有结果,它才会执行查询并缓存结果。
清除缓存
有两种主要方式可以清除 Hibernate 缓存:
session.clear()
或 session.evict()
rrreee@ Cacheable
Remarque : Il existe deux manières principales de vider le cache Hibernate :
session.clear()
ou session.evict() Méthode .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!