Hibernate 命名查询数据库或缓存?

标签 hibernate named-query

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

最佳答案

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

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

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

参见 Hibernate 2nd level cache in a Grails appthe reference documentation获取更多信息。

关于Hibernate 命名查询数据库或缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483975/

相关文章:

java - 即使未定义 `queryResultList`,JPA 也会限制 `setMaxResults`

NHibernate - 如何使用参数值记录命名参数化查询?

java - 使用 JAXB 将子类实例作为父类(super class)传递

java - 如何在 persistence.xml 中设置默认的 Eclipselink CacheCooperativeType?

jakarta-ee - Java EE NamedQuery 和 JOIN 语句 - 导致 EJB 异常

hibernate - 在 Grails 中使用 Hibernate HQL 命名查询?

java - 在@NamedQuery-head 中执行静态方法

java - EJB Web服务,实体未映射错误

nhibernate - HQL:查询动态组件属性

java - JPA与同一实体的双重关系