清除休眠二级缓存
Posted
技术标签:
【中文标题】清除休眠二级缓存【英文标题】:Clear Hibernate 2nd level Cache 【发布时间】:2017-07-05 17:49:45 【问题描述】:我想通过调用以下方法从二级缓存中清除缓存数据:
sessionFactory.getCache().evictEntityRegions();
我只是想知道,这样做有什么坏处吗?例如:如果我尝试在事务中间清除缓存会发生什么?
提前致谢。
【问题讨论】:
【参考方案1】:不,这样做没有害处。实际上,当您将缓存提供程序配置为根据定义的逐出/过期策略逐出/过期项目时,也会发生同样的事情。
【讨论】:
嗨 Dragan,我有一个案例。假设某个事务正在运行以从中获取数据,并且当时二级缓存有数据。同时,另一个线程在前一个事务尚未完成时驱逐所有区域缓存。那么在这种情况下会发生什么。我可以从该事务中的缓存中获取 null 并且会发生数据库命中吗?有没有可能出现问题? @VikasVats 在这种情况下,对象已经在第一级缓存(会话)中,并将在事务结束时从那里获取。如果对象被手动从会话中逐出或整个会话被手动清除,那么对象将简单地从数据库中重新加载并存储在一级和二级缓存中。没有任何问题的可能性。以上是关于清除休眠二级缓存的主要内容,如果未能解决你的问题,请参考以下文章
ehCache 3.0 默认堆上条目大小(与休眠二级缓存一起使用)