【问题标题】:Clear Hibernate 2nd level Cache清除休眠二级缓存
【发布时间】:2017-07-05 17:49:45
【问题描述】:

我想通过调用以下方法从二级缓存中清除缓存数据:

sessionFactory.getCache().evictEntityRegions();

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

提前致谢。

【问题讨论】:

    标签: hibernate session transactions sessionfactory second-level-cache


    【解决方案1】:

    不,这样做没有害处。实际上,当您将缓存提供程序配置为根据定义的逐出/过期策略逐出/过期项目时,也会发生同样的事情。

    【讨论】:

    • 嗨 Dragan,我有一个案例。假设某个事务正在运行以从中获取数据,并且当时二级缓存有数据。同时,另一个线程在前一个事务尚未完成时驱逐所有区域缓存。那么在这种情况下会发生什么。我可以从该事务中的缓存中获取 null 并且会发生数据库命中吗?有没有可能出现问题?
    • @VikasVats 在这种情况下,对象已经在第一级缓存(会话)中,并将在事务结束时从那里获取。如果对象被手动从会话中逐出或整个会话被手动清除,那么对象将简单地从数据库中重新加载并存储在一级和二级缓存中。没有任何问题的可能性。
    猜你喜欢
    • 2010-10-20
    • 2012-10-12
    • 2017-10-07
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2019-04-02
    相关资源
    最近更新 更多