Hibernate 每次执行SELECT语句时,JPA是否可以缓存查询?
例如,我有以下查询(JPA的实现是Hibernate): 我知道JPA会在我第一次执行这个查询时将其解释为SQL,但是如果第二次执行呢?JPA会再解释一遍吗?这是一个耗时的过程Hibernate 每次执行SELECT语句时,JPA是否可以缓存查询?,hibernate,jpa,Hibernate,Jpa,例如,我有以下查询(JPA的实现是Hibernate): 我知道JPA会在我第一次执行这个查询时将其解释为SQL,但是如果第二次执行呢?JPA会再解释一遍吗?这是一个耗时的过程 如果我将所有这些查询更改为NamedQuery,是否会有显著的性能改进?是的,查询计划会被缓存 这就是流程: em.createQuery(…) org.hibernate.internal.SessionImpl.createQuery(字符串查询字符串) org.hibernate.internal.Abstract
如果我将所有这些查询更改为
NamedQuery
,是否会有显著的性能改进?是的,查询计划会被缓存
这就是流程:
因此,查询缓存在会话工厂中,因此一旦查询被翻译,它将在未来的所有会话中共享。请参阅@AntonBessonov是的,我看过这篇文章。但答案有些矛盾。
return em.createQuery("select m.username from Member m", String.class)
.getResultList();