例如,我有以下查询(JPA的实现是Hibernate):
return em.createQuery("select m.username from Member m", String.class)
.getResultList();
我知道JPA会在我第一次执行它时将此查询解释为SQL,但如果是第二次怎么办? JPA会再次解释它吗?这很费时间。
如果我将所有这些查询更改为NamedQuery
,是否会有明显的性能提升?
答案 0 :(得分:0)
是的,缓存了查询计划。
这是流程:
因此查询会缓存在会话工厂中,因此一旦查询被翻译,它将在所有未来的会话中共享。