我们的项目中使用了Hibernate。我的问题是关于命名查询的。有人可以指导一下Hibernate如何处理命名查询吗?如果Hibernate被配置为使用级别1缓存,它是否也会从缓存中返回命名查询的结果,还是总是要到数据库中进行查询?
一级缓存是Hibernate会话。除非使用无状态会话的极少数情况,否则默认情况下存在一级缓存。查询结果从不在一级缓存中缓存。我认为你指的是“二级缓存”。命名查询与未命名查询在缓存方面处理方式完全相同。查询可以被缓存也可以不被缓存。如果它们被缓存,可以避免到数据库的往返。无论它们是否被缓存,如果它们返回的实体实例已经在二级缓存中,则查询将返回ID,然后这些实体本身将从二级缓存中加载。有关更多信息,请参见《Grails应用程序中的Hibernate第二级缓存》和《参考文档》。