2017-05-29 63 views
0

如果我们配置了Ehcache的一类和查询缓存为同一类的Ehcache类配置和查询缓存具有任何优势

<cache name="com.model.Employee" 
      maxEntriesLocalHeap="100" overflowToDisk="false" statistics="true" /> 

<cache name="employees" maxEntriesLocalHeap="1000" overflowToDisk="false" 
timeToLiveSeconds="60" statistics="true" /> 

任何性能上的优势是,如果我们做的是真正需要的第一配置查询缓存

@QueryHints({@QueryHint(name = "org.hibernate.cacheable", value = "true"), @QueryHint(name="org.hibernate.cacheRegion", value="employees")}) 
    List<Employee> findAll(); 

回答

1

实体缓存和查询缓存是两个非常不同的东西。

实体缓存缓存实体,所以Hibernate可以通过缓存中的Id查找实体而无需去数据库。

查询缓存另一方面缓存查询结果。因此,对于给定的查询,它存储了该查询的结果(我基本上假设为Ids)。因此,对于这些Id,它可以查询实体缓存以获取实体。

从上面的描述中可以明显看出:使用两者都是非常合理的。