具有where子句的实体的二级缓存

时间:2010-04-27 11:15:41

标签: hibernate caching

我想知道如果我在hbm.xml类定义中放置一个where子句,那么hibernate二级缓存在哪里按预期工作:

<hibernate-mapping>
  <class name="com.clazzes.A" table="TABLE_A"
   mutable="false" where="xyz=5" >
  <cache usage="read-only"/>
  <id name="id"  />
  ...

hibernate仍会将id作为密钥放入缓存中,还是我启用了查询缓存?例如。当我然后执行像from A where id=2这样的HQL查询时,会产生类似于select * from TABLE_A where id=2 and (xyz=5)的SQL。如果我执行此查询两次,它会考虑二级缓存,还是会执行两次SQL?

1 个答案:

答案 0 :(得分:0)

是的,您必须启用查询缓存。这是每个查询设置,因此您可以对其进行足够的控制。