Hibernate命名查询DB还是缓存?

时间:2012-02-28 14:42:42

标签: hibernate named-query

我们在项目中使用Hibernate。我的问题是关于命名查询。有人可以指导我如何通过Hibernate处理命名查询。如果Hibernate配置为使用1级缓存,它还会从缓存中返回命名查询的结果,还是总是会访问数据库?

1 个答案:

答案 0 :(得分:2)

一级缓存是Hibernate会话。除非在极少数情况下使用无状态会话,否则默认情况下会有一级缓存。查询结果永远不会缓存在第1级缓存中。我认为你的意思是“二级缓存”。

命名查询的处理方式与关于缓存的未命名查询完全相同。

查询是否可以缓存。如果它们被缓存,则可以避免往返数据库。无论它们是否被缓存,如果它们返回二级缓存中的实体实例,查询将返回ID,然后实体本身将从二级缓存加载。

有关详细信息,请参阅Hibernate 2nd level cache in a Grails appthe reference documentation