gpt4 book ai didi

java - ehcache hibernate二级缓存,hibernate自动驱逐

转载 作者:搜寻专家 更新时间:2023-10-31 20:22:05 26 4
gpt4 key购买 nike

在我的查询(查找)缓存 session 关闭后,在新 session 中,在我通过随机写入 Sql 查询更改数据库后,hibernate 正在逐出所有内容,我该如何阻止这种情况发生?我正在研究为很少改变的事情制定政策。

INFO    Executing [namedSqlQuery=dao.web_login, objs=[user1]] 
DEBUG org.springframework.orm.hibernate3.SessionFactoryUtils user1- Opening Hibernate Session
DEBUG org.hibernate.impl.SessionImpl user1 - opened session at timestamp: 5511432318976000
DEBUG org.hibernate.impl.SessionFactoryImpl user1- evicting second-level cache: USERS_LOOKUP
DEBUG org.hibernate.impl.SessionFactoryImpl user1- evicting second-level cache: COUNTRY_LOOKUP

缓存.xml

 <cache name="query.oneHourPolicy"
maxElementsInMemory="10000"
eternal="false"
timeToLiveSeconds="3600"
diskPersistent="true"
overflowToDisk="true"/>

spring hibernate 配置

 <prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>
<prop key="hibernate.cache.provider_configuration_file_resource_path">ehcache.xml</prop>

最佳答案

发现 Hibernate 问题 https://hibernate.onjira.com/browse/HHH-2224

我用波纹管测试过:

在我的随机查询中

<sql-query name="random_write_query" callable="false">
<synchronize table="USER"/>
<synchronize table="USER_ADDRESS"/>
{CALL PACKAGE.FUNCTION(?)}
</sql-query>

每当我调用上面的代码并且它是一个数据库更改时,它只会使由 table = USER 或 USER_ADDRESS 同步的缓存无效

并且只有同步的随机读取查询或实体将被驱逐

<sql-query name="random_read_query">
<synchronize table="USER"/>
<synchronize table="USER_ADDRESS"/>
<return-scalar column="USERNAME" type="string"/>
<![CDATA[
SELECT USERNAME FROM USER, USER_ADDRESS...
]]>
</sql-query>

关于java - ehcache hibernate二级缓存,hibernate自动驱逐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12070431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com