Spring 弹簧&x2B;Hibernate-启用二级缓存

Spring 弹簧&x2B;Hibernate-启用二级缓存,spring,hibernate,Spring,Hibernate,我正在使用Spring+JPA+Hibernate。我正在尝试启用Hibernate的二级缓存。 我的实体用@javax.persistence.Cacheable&&&@org.hibernate.annotations.Cache(用法=cacheconcurrencysttrategy.READ_ONLY)注释 用@Configuration和@EnableTransactionManagement注释的我的类配置包含以下内容: @Bean public LocalSessionF

我正在使用Spring+JPA+Hibernate。我正在尝试启用Hibernate的二级缓存。 我的实体用
@javax.persistence.Cacheable
&&&
@org.hibernate.annotations.Cache(用法=cacheconcurrencysttrategy.READ_ONLY)
注释

@Configuration
@EnableTransactionManagement
注释的我的类配置包含以下内容:

@Bean
    public LocalSessionFactoryBean sessionFactory(DataSource dataSource) {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        sessionFactory.setPackagesToScan(new String[] { "fr.pasteur.gaip.dal.*" });
        sessionFactory.setHibernateProperties(additionalProperties());
        return sessionFactory;
    }

    Properties additionalProperties() {
        Properties properties = new Properties();
        properties.setProperty(Environment.FORMAT_SQL, "true");
        properties.setProperty(Environment.SHOW_SQL, showSql);
        properties.setProperty(Environment.DIALECT, dialect);

        properties.setProperty(Environment.USE_QUERY_CACHE, "true");
        properties.setProperty(Environment.USE_SECOND_LEVEL_CACHE, "true");
        properties.setProperty(Environment.GENERATE_STATISTICS, "true");
        properties.setProperty(Environment.JPA_SHARED_CACHE_MODE, "ALL");
//      properties.setProperty(Environment.CACHE_REGION_FACTORY, "org.hibernate.cache.ehcache.EhCacheRegionFactory");
        properties.put(Environment.CACHE_REGION_FACTORY, JCacheRegionFactory.class.getName());
        properties.put("hibernate.javax.cache.provider", EhcacheCachingProvider.class.getName());
        properties.put(Environment.CACHE_PROVIDER_CONFIG, "cache/jcache.xml");
//      properties.put("net.sf.ehcache.configurationResourceName", "cache/ehcache.xml");

        return properties;
    }
这是我的jcache.xml:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://www.ehcache.org/v3"
        xmlns:jsr107="http://www.ehcache.org/v3/jsr107"
        xsi:schemaLocation="
            http://www.ehcache.org/v3
            http://www.ehcache.org/schema/ehcache-core.xsd
            http://www.ehcache.org/v3/jsr107
            http://www.ehcache.org/schema/ehcache-107-ext.xsd">
    <service>
        <jsr107:defaults enable-management="true" enable-statistics="true" default-template="default" >

        </jsr107:defaults>
    </service>

    <cache alias="default-query-results-region">
        <expiry>
            <tti>3000</tti>
        </expiry>
        <heap>2048</heap>
    </cache>

    <cache alias="default-update-timestamps-region">
        <expiry>
            <none />
        </expiry>
        <heap>4096</heap>
    </cache>

    <cache alias="USER" uses-template="default">
        <expiry>
            <tti>3000</tti>
        </expiry>
        <heap>2048</heap>
    </cache>

    <cache-template name="default">
        <expiry>
            <tti>3000</tti>
        </expiry>
        <heap>2048</heap>
    </cache-template>

</config>

3000
2048
4096
3000
2048
3000
2048
我使用了Ehcache和JCache,因此在我的pom中我有:

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${lib.hibernate-core.version}</version>
        </dependency>
        <!--<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-ehcache</artifactId>
            <version>${lib.hibernate-core.version}</version>
        </dependency>-->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-jcache</artifactId>
            <version>${lib.hibernate-core.version}</version>
        </dependency>
        <dependency>
            <groupId>org.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>3.8.1</version>
        </dependency>
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>2.10.9.2</version>
        </dependency>
        <dependency>
            <groupId>javax.cache</groupId>
            <artifactId>cache-api</artifactId>
            <version>1.1.1</version>
        </dependency>

org.hibernate
冬眠核心
${lib.hibernate core.version}
org.hibernate
冬眠
${lib.hibernate core.version}
org.ehcache
ehcache
3.8.1
net.sf.ehcache
ehcache
2.10.9.2
javax.cache
缓存api
1.1.1
我使用的是SpringMVC4.3.12.RELEASE和Hibernate5.4.12.Final

但是像
sessionFactory.getCurrentSession().createQuery(query).getResultList()
这样的查询仍在触发DB查询,而不是使用缓存数据

你知道少了什么吗