要清楚和容易,我有两个项目: 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。因此,与其让没有缓存可言,你的一切缓存

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top