如何完全禁用Hibernate缓存?(使用Spring 3,带注释的Hibernate)

gen*_*nad 9 hibernate


我的java应用程序每10秒向mysql服务器询问一次查询.
我手动向表中插入一个新行.
而Hibernate找不到它.
另外,当我手动删除一行时,Hibernate会显示该行存在.
我建议那是因为Hibernate缓存.
有什么方法可以禁用它吗?
谢谢!

Der*_*har 12

你的意思是一级缓存还是二级缓存?拥有一个Hibernate二级缓存(如Ehcache)可以缓存与您手动修改的同一个表中的行对应的实体,这可能会导致您描述的行为.第一级缓存不会导致此行为,我认为无论如何都不能禁用它.

要禁用Hibernate二级缓存,请从Hibernate配置文件中删除hibernate-cfg.xml所有引用二级缓存的行.例如:

<!-- Enable the second-level cache  -->
<property name="hibernate.cache.provider_class">
    net.sf.ehcache.hibernate.EhCacheProvider
</property>
<property name="hibernate.cache.region.factory_class">
    net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_structured_entries">true</property>     
<property name="hibernate.cache.generate_statistics">true</property>
Run Code Online (Sandbox Code Playgroud)