Hibernate的二级缓存ehcache.xml中,缓存设置实体无法读取冬眠
-
06-09-2019 - |
题
要清楚和容易,我有两个项目: 1.实体项目中,也有在此项目中的所有实体类。 2.包含main()函数,以运行该应用程序的项目,我的ehcache.xml中被放置在该项目的类路径。
我的问题是: 我可以改变的 defaultCache 强> ehcache.xml中的元件,我可以看到从SQL日志文件的变化。但我觉得Hibernate的只读我的 defaultCache 元素,因为无论我在缓存更改 ehcache.xml中的特定实体的元素,将不会有任何变化的SQL日志。
例如: 如果我将 maxElementsInMemory 的 defaultCache 强>元素的 0 的,无论我将 maxElementsInMemory 的高速缓存的一个实体的强>元素的 100 或 0 的,也不会有在第二级高速缓存任何实体缓存。如果我将 maxElementsInMemory 的 defaultCache 强>元素的 100 的,无论我将 maxElementsInMemory 的高速缓存的一个实体的强>元素的 100 或 0 的,总有在第二级高速缓存该实体缓存。
所以,我想,也许在缓存的名称属性一个实体的元素设置错误,不能从休眠读?
解决方案
我发现在我的问题。我使用了Ehcache作为缓存提供者。在ehcache.xml中,我觉得defaultCache元素也被用于所有的QueryCaches也一样,如果我没有设置standardQueryCache元素。因此,这并不重要:无论我设置的maxElementsInMemory为“0”,因为所有的实现QueryCache使用defaultCache区域。但是的maxElementsInMemory设定为“0”绝对可以帮助使用EntityManager.find()函数时禁用该实体的sencond级高速缓存。
其他提示
请,阅读文档。在maxElementsInMemory
设置的情况下,0
的值具有特殊的意义 - unlimited
。因此,与其让没有缓存可言,你的一切缓存