【问题标题】:what does the region attribute inside cache element in a Hibernate hbm xml do?Hibernate hbm xml 中缓存元素内的 region 属性有什么作用?
【发布时间】:2016-12-01 09:51:44
【问题描述】:
我真的被困在这里,无法在整个网络上找到合适的信息。
Hibernate hbm xml 中<cache /> 元素内的region 属性有什么作用?
除了官方jboss documentation 之外,我期待在答案中给出关于 Hibernate hbm xml 中的缓存元素的详细解释。
更具体地说,在查询/条件上设置setCacheble(true) 时; 默认选择哪个缓存区域; StandardQueryCache 区域或 entity hbm.xml 文件中指定的区域
谢谢。
【问题讨论】:
标签:
java
hibernate
caching
ehcache
【解决方案1】:
Hibernate hbm xml 中缓存元素中的“区域”属性用于给出缓存的名称。每当您使用 setCacheble(true) 时,就会仅在此缓存区域中插入或搜索查询。
区域名称用于很多地方,例如从特定区域删除所有缓存,检查命中计数,未命中计数等。
清除缓存示例:
sessionFactory.evictQueries("cacheReginName");
我们可以在一个表上拥有多个缓存区域。
Criteria cri = session.createCriteria(tableName.class);
cri.setCacheRegion("cacheReginName");
或
Query qry = session.createQuery("select name from tableName where Id=1");
qry.setCacheRegion("cacheReginName");
当我们使用上述代码时,仅搜索给定的缓存区域,或者如果未找到查询,则在该区域中插入新的查询。
如果在获取数据时没有设置缓存区域,则使用 hbm.xml 中提到的缓存区域。
如果 hbm.xml 中没有提到缓存区域,则默认缓存区域名称是您的类标签名称属性。
使用多个缓存区域可以根据您的要求。