我为 Java 应用程序新配置了 ehcache。
这是我的 pom 依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.10.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>4.3.10.Final</version>
</dependency>
这些是我为persistence.xml添加的新配置
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>
<property name="hibernate.cache.provider_configuration_file_resource_path" value="classpath:ehcache.xml"/>
<property name="hibernate.show_sql" value="true"/>
这是启用缓存的实体类。
@Entity
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Table(name = "LABEL")
public class Label implements Serializable{
@EmbeddedId
@GeneratedValue(strategy = GenerationType.IDENTITY)
private LabelKey labelKey;
当我多次向该应用程序发送相同的请求时,我可以在日志中看到 sql select 语句(我已启用 show_sql =true)。我认为这意味着它没有访问二级缓存。
我在这里做错了什么?
答案 0 :(得分:0)
我也必须添加这个依赖
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.6.11</version>
</dependency>
在调用 createQuery 方法时,我还必须调用 setCachable(true) 方法