4

Je veux effacer les données du cache du cache de niveau 2 en appelant la méthode ci-dessous:Mise en veille prolongée 2e niveau Cache

sessionFactory.getCache().evictEntityRegions(); 

Je veux juste savoir, est-il de mal à faire cela? Par exemple: Que se passera-t-il si j'essaie d'effacer le cache au milieu de la transaction?

Merci d'avance.

Répondre

2

Non, il n'y a pas de mal à le faire. En fait, la même chose se produit lorsque vous configurez le fournisseur de cache pour expulser/expirer des éléments en fonction de la politique d'expulsion/expiration définie.

+0

Salut Dragan, j'ai un cas. Supposons que certaines transactions soient en cours pour obtenir des données et que le cache de second niveau contient des données à ce moment-là. En même temps, un autre thread évite tous les caches de région alors que la transaction précédente n'est pas encore terminée. Alors qu'arrivera-t-il dans ce cas. Puis-je obtenir null à partir du cache dans cette transaction et un coup de DB se produira? Y a-t-il un risque de problème? –

+1

@VikasVats Dans ce cas, l'objet est déjà dans le cache de premier niveau (session) et sera extrait de là à la fin de la transaction. Si l'objet est manuellement évincé de la session ou si la session entière est effacée manuellement, l'objet sera simplement rechargé à partir de la base de données et stocké dans les caches de premier et second niveau. Il n'y a aucune chance de problème à ce sujet. –