Hibernate 清除休眠二级缓存
我想通过调用以下方法从二级缓存中清除缓存数据:Hibernate 清除休眠二级缓存,hibernate,session,transactions,sessionfactory,second-level-cache,Hibernate,Session,Transactions,Sessionfactory,Second Level Cache,我想通过调用以下方法从二级缓存中清除缓存数据: sessionFactory.getCache().evictEntityRegions(); 我只是想知道,这样做有什么害处吗?例如:若我试图在事务中间清除缓存,会发生什么 提前谢谢。不,这样做没有害处。实际上,当您根据定义的逐出/过期策略将缓存提供程序配置为逐出/过期项目时,也会发生同样的情况。Hi Dragan,我有一个例子。假设某个事务正在运行以从中获取数据,并且二级缓存当时有数据。同时,另一个线程在上一个事务尚未完成时退出所有区域缓存。
sessionFactory.getCache().evictEntityRegions();
我只是想知道,这样做有什么害处吗?例如:若我试图在事务中间清除缓存,会发生什么
提前谢谢。不,这样做没有害处。实际上,当您根据定义的逐出/过期策略将缓存提供程序配置为逐出/过期项目时,也会发生同样的情况。Hi Dragan,我有一个例子。假设某个事务正在运行以从中获取数据,并且二级缓存当时有数据。同时,另一个线程在上一个事务尚未完成时退出所有区域缓存。那么在这种情况下会发生什么呢。我是否可以从该事务中的缓存中获取null,然后发生db命中?有可能出现任何问题吗?@VikasVats在这种情况下,对象已经在一级缓存(会话)中,并将在事务结束时从那里获取。如果手动将对象从会话中逐出,或者手动清除整个会话,则该对象只需从数据库中重新加载,并存储在一级和二级缓存中。这方面不可能有任何问题。