java 查询同一个item时没有命中ehcache

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11050196/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 03:35:35  来源:igfitidea点击:

Ehcache was not hit when querying the same item

javahibernatecachingjpaehcache

提问by Zun

Currently, i configured my hibernate with H2 Database using Ehcache as the 2nd level cache to run 2 tests (query a item 10000 times to see how cache works), however the cache did not work. The benchmark time was not changed comparing to the test without ehcache. The statistics showed that it was not hit at all even though the cache has size = 1 (the item was queried):

目前,我使用 H2 数据库配置了我的休眠,使用 Ehcache 作为二级缓存运行 2 个测试(查询一个项目 10000 次以查看缓存如何工作),但是缓存不起作用。与没有 ehcache 的测试相比,基准时间没有改变。统计数据显示,即使缓存的大小为 1(该项目已被查询),它也根本没有被命中:

[  name = Location cacheHits = 0 onDiskHits = 0 offHeapHits = 0 inMemoryHits = 0 misses = 0 onDiskMisses = 0 offHeapMisses = 0 inMemoryMisses = 0 size = 1 averageGetTime = 0.0 evictionCount = 0 ]

Hibernate statistics (sessionFactory.getStatistics().getSecondLevelCacheStatistics("Location")):

Hibernate 统计信息 (sessionFactory.getStatistics().getSecondLevelCacheStatistics("Location")):

SecondLevelCacheStatistics[hitCount=0,missCount=0,putCount=0,elementCountInMemor??y=1,elementCountOnDisk=1,sizeInMemory=760] 

Here are my configurations:

这是我的配置:

Maven dependencies:

Maven 依赖项:

<dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-ehcache</artifactId>
      <version>4.1.3.Final</version>
    </dependency>
    <dependency>
      <groupId>net.sf.ehcache</groupId>
      <artifactId>ehcache-core</artifactId>
      <version>2.5.2</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>4.1.3.Final</version>
    </dependency>

Hibernate configuration with ehcache enabled:

启用 ehcache 的休眠配置:

    Configuration cfg = new Configuration()
        .addAnnotatedClass(Location.class)
        .setProperty("hibernate.connection.driver_class", dbConfig.getH2JdbcDriverName())
        .setProperty("hibernate.connection.url", dbConfig.getDbUrl())
        .setProperty("hibernate.connection.username", dbConfig.getUserName())
        .setProperty("hibernate.connection.password", dbConfig.getPassword())
        .setProperty("javax.persistence.validation.mode", "NONE")
        .setProperty("hibernate.cache.use_second_level_cache", "true")
        .setProperty("hibernate.cache.use_query_cache", "true")
        .setProperty("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.EhCacheRegionFactory");

    sessionFactory = cfg.buildSessionFactory();

Ehcache xml configuration:

Ehcache xml 配置:

<ehcache>
<diskStore path="c:/_cached"/>
<cache
    name="org.hibernate.cache.StandardQueryCache"
    maxEntriesLocalHeap="5"
    eternal="false"
    timeToLiveSeconds="120"
    overflowToDisk="true"/>

<cache
    name="org.hibernate.cache.UpdateTimestampsCache"
    maxEntriesLocalHeap="5000"
    eternal="true"
    overflowToDisk="true"/>

<cache
    name="Location"
    maxElementsInMemory="10000"
    eternal="false"
    timeToIdleSeconds="120"
    timeToLiveSeconds="120"
    overflowToDisk="true"
    diskPersistent="false"
    diskExpiryThreadIntervalSeconds="120"
    memoryStoreEvictionPolicy="LRU"/>
<defaultCache 
    maxElementsInMemory="10000"
    eternal="false"
    timeToIdleSeconds="120"
    timeToLiveSeconds="120"
    overflowToDisk="true"
    diskPersistent="false"
    diskExpiryThreadIntervalSeconds="120"
    memoryStoreEvictionPolicy="LRU"/>
</ehcache>

Database class:

数据库类:

import org.hibernate.annotations.*;

import javax.persistence.*;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;

@Entity
@Table(name = "Location")
@org.hibernate.annotations.Cache(region = "Location", usage = CacheConcurrencyStrategy.READ_WRITE)
public class Location implements Serializable {
    @Id
    @GeneratedValue
    @Column(name = "Id")
    private int id;

    @Column(name = "Name", nullable = false)
    private String name;

    @Column(name = "Description")
    private String description;

    @Column(name = "Position", nullable = false)
    private Geometry position;

    //getters and setters are ommited 
}

Test code:

测试代码:

@Test
public void testQueryCache(){
    int size = 10000;
    Location lo = null;
    long startTime = System.currentTimeMillis();
    Session currentSession = sessionFactory.openSession();
    for (int i = 0; i< size ; i++){
        Transaction transaction = currentSession.beginTransaction();
        lo = (Location) currentSession.createCriteria(Location.class)
            .add(Restrictions.eq("id", 86))
            .setCacheable(true)
            .uniqueResult();
        transaction.commit();
    }
    long stopTime = System.currentTimeMillis();
    Assert.assertNotNull(lo);
    System.out.println(String.format("\t %d ms", stopTime - startTime));

    Cache cache = CacheManager.getInstance().getCache("Location");
    System.out.println(cache.getStatistics().toString());

    SecondLevelCacheStatistics statistics = sessionFactory.getStatistics().getSecondLevelCacheStatistics("Location");
    System.out.println(statistics.toString());
}

@Test
public void testEhcacheWithGet(){
    int size = 10000;
    Location lo = null;
    long startTime = System.currentTimeMillis();
    for (int i = 0; i< size ; i++){
        Session currentSession = sessionFactory.openSession();
        Transaction transaction = currentSession.beginTransaction();
            lo = (Location) currentSession.get(Location.class, 86);
        transaction.commit();
        currentSession.close();
    }

    long stopTime = System.currentTimeMillis();
    Assert.assertNotNull(lo);
    System.out.println(String.format("\t %d ms", stopTime - startTime));

    Cache cache = CacheManager.getInstance().getCache("Location");
    System.out.println(cache.getStatistics().toString());

    SecondLevelCacheStatistics statistics = sessionFactory.getStatistics().getSecondLevelCacheStatistics("Location");
    System.out.println(statistics.toString());
}

Console messages for @testQueryCache :

@testQueryCache 的控制台消息:

2012-06-15 15:07:03,953 DEBUG [org.jboss.logging] - Logging Provider: org.jboss.logging.Log4jLoggerProvider 
2012-06-15 15:07:04,917 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from ehcache.xml found in the classpath: file:/***PATH***/ehcache.xml 
2012-06-15 15:07:04,920 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from URL: file:/***PATH***/ehcache.xml 
2012-06-15 15:07:04,921 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from InputStream 
2012-06-15 15:07:05,085 DEBUG [net.sf.ehcache.config.DiskStoreConfiguration] - Disk Store Path: c:/_cached 
2012-06-15 15:07:05,125 DEBUG [net.sf.ehcache.util.PropertyUtil] - propertiesString is null. 
2012-06-15 15:07:05,139 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - No CacheManagerEventListenerFactory class specified. Skipping... 
2012-06-15 15:07:05,186 DEBUG [net.sf.ehcache.Cache] - No BootstrapCacheLoaderFactory class specified. Skipping... 
2012-06-15 15:07:05,186 DEBUG [net.sf.ehcache.Cache] - CacheWriter factory not configured. Skipping... 
2012-06-15 15:07:05,188 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - No CacheExceptionHandlerFactory class specified. Skipping... 
2012-06-15 15:07:05,190 DEBUG [net.sf.ehcache.Cache] - No BootstrapCacheLoaderFactory class specified. Skipping... 
2012-06-15 15:07:05,191 DEBUG [net.sf.ehcache.Cache] - CacheWriter factory not configured. Skipping... 
2012-06-15 15:07:05,191 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - No CacheExceptionHandlerFactory class specified. Skipping... 
2012-06-15 15:07:05,191 DEBUG [net.sf.ehcache.Cache] - No BootstrapCacheLoaderFactory class specified. Skipping... 
2012-06-15 15:07:05,192 DEBUG [net.sf.ehcache.Cache] - CacheWriter factory not configured. Skipping... 
2012-06-15 15:07:05,192 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - No CacheExceptionHandlerFactory class specified. Skipping... 
2012-06-15 15:07:05,192 DEBUG [net.sf.ehcache.Cache] - No BootstrapCacheLoaderFactory class specified. Skipping... 
2012-06-15 15:07:05,193 DEBUG [net.sf.ehcache.Cache] - CacheWriter factory not configured. Skipping... 
2012-06-15 15:07:05,193 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - No CacheExceptionHandlerFactory class specified. Skipping... 
2012-06-15 15:07:05,222 DEBUG [net.sf.ehcache.store.MemoryStore] - Initialized net.sf.ehcache.store.MemoryStore for org.hibernate.cache.UpdateTimestampsCache 
2012-06-15 15:07:05,230 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.UpdateTimestampsCache.index 
2012-06-15 15:07:05,242 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Matching data file missing (or empty) for index file. Deleting index file c:\_cached\org.hibernate.cache.UpdateTimestampsCache.index 
2012-06-15 15:07:05,243 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.UpdateTimestampsCache.index 
2012-06-15 15:07:05,252 DEBUG [net.sf.ehcache.Cache] - Initialised cache: org.hibernate.cache.UpdateTimestampsCache 
2012-06-15 15:07:05,252 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured. Skipping for 'org.hibernate.cache.UpdateTimestampsCache'. 
2012-06-15 15:07:05,253 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured for defaultCache. Skipping for 'org.hibernate.cache.UpdateTimestampsCache'. 
2012-06-15 15:07:05,253 DEBUG [net.sf.ehcache.store.MemoryStore] - Initialized net.sf.ehcache.store.MemoryStore for Location 
2012-06-15 15:07:05,258 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file Location.index 
2012-06-15 15:07:05,259 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Matching data file missing (or empty) for index file. Deleting index file c:\_cached\Location.index 
2012-06-15 15:07:05,259 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file Location.index 
2012-06-15 15:07:05,260 DEBUG [net.sf.ehcache.Cache] - Initialised cache: Location 
2012-06-15 15:07:05,260 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured. Skipping for 'Location'. 
2012-06-15 15:07:05,263 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured for defaultCache. Skipping for 'Location'. 
2012-06-15 15:07:05,264 DEBUG [net.sf.ehcache.store.MemoryStore] - Initialized net.sf.ehcache.store.MemoryStore for org.hibernate.cache.StandardQueryCache 
2012-06-15 15:07:05,265 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.StandardQueryCache.index 
2012-06-15 15:07:05,266 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Matching data file missing (or empty) for index file. Deleting index file c:\_cached\org.hibernate.cache.StandardQueryCache.index 
2012-06-15 15:07:05,267 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.StandardQueryCache.index 
2012-06-15 15:07:05,268 DEBUG [net.sf.ehcache.Cache] - Initialised cache: org.hibernate.cache.StandardQueryCache 
2012-06-15 15:07:05,268 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured. Skipping for 'org.hibernate.cache.StandardQueryCache'. 
2012-06-15 15:07:05,272 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured for defaultCache. Skipping for 'org.hibernate.cache.StandardQueryCache'. 
2012-06-15 15:07:05,482 WARN [org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory] - HHH020003: Could not find a specific ehcache configuration for cache named [org.hibernate.cache.spi.UpdateTimestampsCache]; using defaults. 
2012-06-15 15:07:05,483 DEBUG [net.sf.ehcache.store.MemoryStore] - Initialized net.sf.ehcache.store.MemoryStore for org.hibernate.cache.spi.UpdateTimestampsCache 
2012-06-15 15:07:05,484 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.spi.UpdateTimestampsCache.index 
2012-06-15 15:07:05,486 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Matching data file missing (or empty) for index file. Deleting index file c:\_cached\org.hibernate.cache.spi.UpdateTimestampsCache.index 
2012-06-15 15:07:05,487 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.spi.UpdateTimestampsCache.index 
2012-06-15 15:07:05,488 DEBUG [net.sf.ehcache.Cache] - Initialised cache: org.hibernate.cache.spi.UpdateTimestampsCache 
2012-06-15 15:07:05,488 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured for defaultCache. Skipping for 'org.hibernate.cache.spi.UpdateTimestampsCache'. 
2012-06-15 15:07:05,491 WARN [org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory] - HHH020003: Could not find a specific ehcache configuration for cache named [org.hibernate.cache.internal.StandardQueryCache]; using defaults. 
2012-06-15 15:07:05,492 DEBUG [net.sf.ehcache.store.MemoryStore] - Initialized net.sf.ehcache.store.MemoryStore for org.hibernate.cache.internal.StandardQueryCache 
2012-06-15 15:07:05,493 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.internal.StandardQueryCache.index 
2012-06-15 15:07:05,495 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Matching data file missing (or empty) for index file. Deleting index file c:\_cached\org.hibernate.cache.internal.StandardQueryCache.index 
2012-06-15 15:07:05,495 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.internal.StandardQueryCache.index 
2012-06-15 15:07:05,496 DEBUG [net.sf.ehcache.Cache] - Initialised cache: org.hibernate.cache.internal.StandardQueryCache 
2012-06-15 15:07:05,497 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured for defaultCache. Skipping for 'org.hibernate.cache.internal.StandardQueryCache'. 
2012-06-15 15:07:05,772 DEBUG [net.sf.ehcache.store.disk.Segment] - put added 0 on heap 
2012-06-15 15:07:05,783 DEBUG [net.sf.ehcache.store.disk.Segment] - put added 0 on heap 
2012-06-15 15:07:05,794 DEBUG [net.sf.ehcache.store.disk.Segment] - fault removed 0 from heap 
2012-06-15 15:07:05,794 DEBUG [net.sf.ehcache.store.disk.Segment] - fault added 0 on disk 
2012-06-15 15:07:05,795 DEBUG [net.sf.ehcache.store.disk.Segment] - fault removed 0 from heap 
2012-06-15 15:07:05,795 DEBUG [net.sf.ehcache.store.disk.Segment] - fault added 0 on disk 
2012-06-15 15:07:06,190 DEBUG [net.sf.ehcache.util.UpdateChecker] - Checking for update... 
     2586 ms
2012-06-15 15:07:08,152 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from ehcache.xml found in the classpath: file:/***PATH***/ehcache.xml 
2012-06-15 15:07:08,153 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from URL: file:/***PATH***/ehcache.xml 
2012-06-15 15:07:08,155 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from InputStream 
2012-06-15 15:07:08,159 DEBUG [net.sf.ehcache.config.DiskStoreConfiguration] - Disk Store Path: c:/_cached 
[  name = Location cacheHits = 0 onDiskHits = 0 offHeapHits = 0 inMemoryHits = 0 misses = 0 onDiskMisses = 0 offHeapMisses = 0 inMemoryMisses = 0 size = 1 averageGetTime = 0.0 evictionCount = 0 ]
2012-06-15 15:07:08,174 INFO [net.sf.ehcache.pool.sizeof.AgentLoader] - Located valid 'tools.jar' at 'C:\Program Files (x86)\Java\jdk1.6.0_31\jre\..\lib\tools.jar' 
2012-06-15 15:07:08,184 INFO [net.sf.ehcache.pool.sizeof.JvmInformation] - Detected JVM data model settings of: 32-Bit HotSpot JVM 
2012-06-15 15:07:08,240 INFO [net.sf.ehcache.pool.sizeof.AgentLoader] - Extracted agent jar to temporary file C:\Users\****\AppData\Local\Temp\ehcache-sizeof-agent6609755822520222855.jar 
2012-06-15 15:07:08,241 INFO [net.sf.ehcache.pool.sizeof.AgentLoader] - Trying to load agent @ C:\Users\****\AppData\Local\Temp\ehcache-sizeof-agent6609755822520222855.jar 
2012-06-15 15:07:08,247 INFO [net.sf.ehcache.pool.impl.DefaultSizeOfEngine] - using Agent sizeof engine 
SecondLevelCacheStatistics[hitCount=0,missCount=0,putCount=0,elementCountInMemory=1,elementCountOnDisk=1,sizeInMemory=760]

Console messages for @testEhcacheWithGet:

@testEhcacheWithGet 的控制台消息:

2012-06-15 15:09:26,046 DEBUG [org.jboss.logging] - Logging Provider: org.jboss.logging.Log4jLoggerProvider 
2012-06-15 15:09:26,993 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from ehcache.xml found in the classpath: file:/***PATH***/ehcache.xml 
2012-06-15 15:09:26,995 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from URL: file:/***PATH***/ehcache.xml 
2012-06-15 15:09:26,997 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from InputStream 
2012-06-15 15:09:27,156 DEBUG [net.sf.ehcache.config.DiskStoreConfiguration] - Disk Store Path: c:/_cached 
2012-06-15 15:09:27,188 DEBUG [net.sf.ehcache.util.PropertyUtil] - propertiesString is null. 
2012-06-15 15:09:27,200 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - No CacheManagerEventListenerFactory class specified. Skipping... 
2012-06-15 15:09:27,247 DEBUG [net.sf.ehcache.Cache] - No BootstrapCacheLoaderFactory class specified. Skipping... 
2012-06-15 15:09:27,248 DEBUG [net.sf.ehcache.Cache] - CacheWriter factory not configured. Skipping... 
2012-06-15 15:09:27,249 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - No CacheExceptionHandlerFactory class specified. Skipping... 
2012-06-15 15:09:27,251 DEBUG [net.sf.ehcache.Cache] - No BootstrapCacheLoaderFactory class specified. Skipping... 
2012-06-15 15:09:27,252 DEBUG [net.sf.ehcache.Cache] - CacheWriter factory not configured. Skipping... 
2012-06-15 15:09:27,252 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - No CacheExceptionHandlerFactory class specified. Skipping... 
2012-06-15 15:09:27,252 DEBUG [net.sf.ehcache.Cache] - No BootstrapCacheLoaderFactory class specified. Skipping... 
2012-06-15 15:09:27,252 DEBUG [net.sf.ehcache.Cache] - CacheWriter factory not configured. Skipping... 
2012-06-15 15:09:27,256 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - No CacheExceptionHandlerFactory class specified. Skipping... 
2012-06-15 15:09:27,257 DEBUG [net.sf.ehcache.Cache] - No BootstrapCacheLoaderFactory class specified. Skipping... 
2012-06-15 15:09:27,257 DEBUG [net.sf.ehcache.Cache] - CacheWriter factory not configured. Skipping... 
2012-06-15 15:09:27,257 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - No CacheExceptionHandlerFactory class specified. Skipping... 
2012-06-15 15:09:27,285 DEBUG [net.sf.ehcache.store.MemoryStore] - Initialized net.sf.ehcache.store.MemoryStore for org.hibernate.cache.StandardQueryCache 
2012-06-15 15:09:27,292 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.StandardQueryCache.index 
2012-06-15 15:09:27,304 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Matching data file missing (or empty) for index file. Deleting index file c:\_cached\org.hibernate.cache.StandardQueryCache.index 
2012-06-15 15:09:27,305 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.StandardQueryCache.index 
2012-06-15 15:09:27,314 DEBUG [net.sf.ehcache.Cache] - Initialised cache: org.hibernate.cache.StandardQueryCache 
2012-06-15 15:09:27,314 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured. Skipping for 'org.hibernate.cache.StandardQueryCache'. 
2012-06-15 15:09:27,314 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured for defaultCache. Skipping for 'org.hibernate.cache.StandardQueryCache'. 
2012-06-15 15:09:27,316 DEBUG [net.sf.ehcache.store.MemoryStore] - Initialized net.sf.ehcache.store.MemoryStore for Location 
2012-06-15 15:09:27,318 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file Location.index 
2012-06-15 15:09:27,319 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Matching data file missing (or empty) for index file. Deleting index file c:\_cached\Location.index 
2012-06-15 15:09:27,319 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file Location.index 
2012-06-15 15:09:27,320 DEBUG [net.sf.ehcache.Cache] - Initialised cache: Location 
2012-06-15 15:09:27,320 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured. Skipping for 'Location'. 
2012-06-15 15:09:27,323 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured for defaultCache. Skipping for 'Location'. 
2012-06-15 15:09:27,324 DEBUG [net.sf.ehcache.store.MemoryStore] - Initialized net.sf.ehcache.store.MemoryStore for org.hibernate.cache.UpdateTimestampsCache 
2012-06-15 15:09:27,325 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.UpdateTimestampsCache.index 
2012-06-15 15:09:27,326 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Matching data file missing (or empty) for index file. Deleting index file c:\_cached\org.hibernate.cache.UpdateTimestampsCache.index 
2012-06-15 15:09:27,327 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.UpdateTimestampsCache.index 
2012-06-15 15:09:27,328 DEBUG [net.sf.ehcache.Cache] - Initialised cache: org.hibernate.cache.UpdateTimestampsCache 
2012-06-15 15:09:27,328 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured. Skipping for 'org.hibernate.cache.UpdateTimestampsCache'. 
2012-06-15 15:09:27,328 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured for defaultCache. Skipping for 'org.hibernate.cache.UpdateTimestampsCache'. 
2012-06-15 15:09:27,530 WARN [org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory] - HHH020003: Could not find a specific ehcache configuration for cache named [org.hibernate.cache.spi.UpdateTimestampsCache]; using defaults. 
2012-06-15 15:09:27,531 DEBUG [net.sf.ehcache.store.MemoryStore] - Initialized net.sf.ehcache.store.MemoryStore for org.hibernate.cache.spi.UpdateTimestampsCache 
2012-06-15 15:09:27,533 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.spi.UpdateTimestampsCache.index 
2012-06-15 15:09:27,534 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Matching data file missing (or empty) for index file. Deleting index file c:\_cached\org.hibernate.cache.spi.UpdateTimestampsCache.index 
2012-06-15 15:09:27,534 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.spi.UpdateTimestampsCache.index 
2012-06-15 15:09:27,538 DEBUG [net.sf.ehcache.Cache] - Initialised cache: org.hibernate.cache.spi.UpdateTimestampsCache 
2012-06-15 15:09:27,539 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured for defaultCache. Skipping for 'org.hibernate.cache.spi.UpdateTimestampsCache'. 
2012-06-15 15:09:27,544 WARN [org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory] - HHH020003: Could not find a specific ehcache configuration for cache named [org.hibernate.cache.internal.StandardQueryCache]; using defaults. 
2012-06-15 15:09:27,545 DEBUG [net.sf.ehcache.store.MemoryStore] - Initialized net.sf.ehcache.store.MemoryStore for org.hibernate.cache.internal.StandardQueryCache 
2012-06-15 15:09:27,546 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.internal.StandardQueryCache.index 
2012-06-15 15:09:27,548 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Matching data file missing (or empty) for index file. Deleting index file c:\_cached\org.hibernate.cache.internal.StandardQueryCache.index 
2012-06-15 15:09:27,548 DEBUG [net.sf.ehcache.store.disk.DiskStorageFactory] - Failed to delete file org.hibernate.cache.internal.StandardQueryCache.index 
2012-06-15 15:09:27,549 DEBUG [net.sf.ehcache.Cache] - Initialised cache: org.hibernate.cache.internal.StandardQueryCache 
2012-06-15 15:09:27,549 DEBUG [net.sf.ehcache.config.ConfigurationHelper] - CacheDecoratorFactory not configured for defaultCache. Skipping for 'org.hibernate.cache.internal.StandardQueryCache'. 
2012-06-15 15:09:27,835 DEBUG [net.sf.ehcache.store.disk.Segment] - put added 0 on heap 
2012-06-15 15:09:27,869 DEBUG [net.sf.ehcache.store.disk.Segment] - fault removed 0 from heap 
2012-06-15 15:09:27,870 DEBUG [net.sf.ehcache.store.disk.Segment] - fault added 0 on disk 
2012-06-15 15:09:28,251 DEBUG [net.sf.ehcache.util.UpdateChecker] - Checking for update... 
     4283 ms
2012-06-15 15:09:31,910 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from ehcache.xml found in the classpath: file:/***PATH***/ehcache.xml 
2012-06-15 15:09:31,911 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from URL: file:/***PATH***/ehcache.xml 
2012-06-15 15:09:31,912 DEBUG [net.sf.ehcache.config.ConfigurationFactory] - Configuring ehcache from InputStream 
2012-06-15 15:09:31,915 DEBUG [net.sf.ehcache.config.DiskStoreConfiguration] - Disk Store Path: c:/_cached 
[  name = Location cacheHits = 0 onDiskHits = 0 offHeapHits = 0 inMemoryHits = 0 misses = 0 onDiskMisses = 0 offHeapMisses = 0 inMemoryMisses = 0 size = 1 averageGetTime = 0.0 evictionCount = 0 ]
2012-06-15 15:09:31,932 INFO [net.sf.ehcache.pool.sizeof.AgentLoader] - Located valid 'tools.jar' at 'C:\Program Files (x86)\Java\jdk1.6.0_31\jre\..\lib\tools.jar' 
2012-06-15 15:09:31,942 INFO [net.sf.ehcache.pool.sizeof.JvmInformation] - Detected JVM data model settings of: 32-Bit HotSpot JVM 
2012-06-15 15:09:32,001 INFO [net.sf.ehcache.pool.sizeof.AgentLoader] - Extracted agent jar to temporary file C:\Users\****\AppData\Local\Temp\ehcache-sizeof-agent6451434728035591561.jar 
2012-06-15 15:09:32,002 INFO [net.sf.ehcache.pool.sizeof.AgentLoader] - Trying to load agent @ C:\Users\****\AppData\Local\Temp\ehcache-sizeof-agent6451434728035591561.jar 
2012-06-15 15:09:32,009 INFO [net.sf.ehcache.pool.impl.DefaultSizeOfEngine] - using Agent sizeof engine 
SecondLevelCacheStatistics[hitCount=0,missCount=0,putCount=0,elementCountInMemory=1,elementCountOnDisk=1,sizeInMemory=760]

Please help me to figure out what am i doing wrong!!! :(

请帮我弄清楚我做错了什么!!!:(

Thank you so much!!!

太感谢了!!!

回答by serge

Late response, but

迟到的回应,但

Try to add statistics="true"in the <cache>element that you want to track. Also add <property name="hibernate.generate_statistics">true</property>in hibernate.cfg.xml

尝试添加要跟踪statistics="true"<cache>元素。还要添加 <property name="hibernate.generate_statistics">true</property>hibernate.cfg.xml

回答by Alex Snaps

Only quickly scanning through this, but you do configure to use hibernate to use net.sf.ehcache.hibernate.EhCacheRegionFactory, not the singleton, but then use the CacheManager.getInstance()... Did you try monitor the Cache activity through the Hibernate stats ? Wonder whether you actually use the same CacheManageas Hibernate does...

只是快速扫描这个,但你确实配置为使用休眠来使用net.sf.ehcache.hibernate.EhCacheRegionFactory,而不是使用,singleton然后使用CacheManager.getInstance()......你是否尝试通过休眠状态监控缓存活动?想知道您是否真的使用与CacheManageHibernate相同的...

回答by Alex Barnes

Have you tried:

你有没有尝试过:

sessionFactory.getCurrentSession().get(Location.class, 86);

instead of using a Criteria Query? It is my understanding that Hibernate will only hit the second level cache with loading an object by the @Id, so using a get/load on the session.

而不是使用标准查询?我的理解是,Hibernate 只会通过@Id 加载对象来访问二级缓存,因此在会话上使用获取/加载。

If you make the Criteria cacheable:

如果您使 Criteria 可缓存:

sessionFactory.getCurrentSession.createCriteria().setCacheable(true).uniqueResult();

and enable the entity and query cache you will hit the second level cache whenever you execute that query.

并启用实体和查询缓存,您将在执行该查询时访问二级缓存。