我已经在使用 Spring 和 Hibernate 的 Java 应用程序上设置了 ehcache。但是,当我运行 Junit 测试并打印统计信息时,缓存中似乎没有任何内容:
每个缓存的缓存管理器统计信息的输出:
COM.****.SERVICES.CLARITY.DOMAIN.ACTIONITEM.BYRESOURCEUNIQUENAME:getCacheHits:0 getCacheMisses:0 getObjectCount:0
COM.****.SERVICES.CLARITY.DOMAIN.ACTIONITEM:getCacheHits:0 getCacheMisses:0 getObjectCount:0
COM.****.SERVICES.CLARITY.DOMAIN.RESOURCE:getCacheHits:0 getCacheMisses:0 getObjectCount:0
映射文件的内容(仅部分,太大,无法全部粘贴):
<class name="ActionItem" table="CAL_ACTION_ITEMS" mutable="false" lazy="false" >
<cache region="com.****.services.clarity.domain.ActionItem" usage="read-only" include="all" />
[...]
<query name="byResourceUniqueName" cacheable="true" cache-region="com.****.services.clarity.domain.ActionItem.byResourceUniqueName" read-only="true">
FROM ActionItem WHERE id IN (
SELECT DISTINCT actionItemId FROM ActionItemAssignee as aia WHERE assigneeId IN (
SELECT userId FROM Resource WHERE uniqueName = :uniqueName
)
)
ORDER BY dueDate
</query>
EHCACHE.XML 的内容:
<cache
name="com.****.services.clarity.domain.ActionItem"
maxElementsInMemory="2000" eternal="false" timeToIdleSeconds="0"
timeToLiveSeconds="600" overflowToDisk="false" />
<cache
name="com.****.services.clarity.domain.ActionItem.byResourceUniqueName"
maxElementsInMemory="2000" eternal="false" timeToIdleSeconds="0"
timeToLiveSeconds="60" overflowToDisk="false" />
<defaultCache maxElementsInMemory="200" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
memoryStoreEvictionPolicy="LRU" />
休眠配置:
<property name="hibernateProperties">
<value>
hibernate.format_sql=true
hibernate.dialect=org.hibernate.dialect.OracleDialect
hibernate.cache.provider_class=net.sf.ehcache.hibernate.EhCacheProvider
hibernate.cache.use_query_cache=true
hibernate.show_sql=true
</value>
</property>
</bean>
关于如何填充缓存的任何想法?谢谢。