4

我想通过调用下面的方法来清除二级缓存缓存数据:清除Hibernate的二级缓存

sessionFactory.getCache().evictEntityRegions(); 

我只是想知道,有没有做什么害处吗?例如:如果我尝试在事务中间清除缓存会发生什么情况?

在此先感谢。

回答

2

不,这样做并没有什么坏处。实际上,当您将缓存提供程序配置为基于定义的逐出/过期策略来逐出/过期项目时,会发生同样的情况。

+0

嗨Dragan,我有一个case.Suppose如果一些事务正在运行,以获得数据和二级缓存有数据在那个时候。与此同时,另一个线程在上一个事务尚未完成的同时驱逐所有区域高速缓存。那么在这种情况下会发生什么。我可以从该事务中的缓存中获取null,并且会发生数据库命中?有什么问题吗? –

+1

@VikasVats在这种情况下,对象已经在第一级缓存(会话)中,并且在事务结束时将从那里获取对象。如果从会话中手动清除对象或手动清除整个会话,则该对象将从db重新加载并存储在第一级和第二级高速缓存中。关于这个问题没有任何问题。 –