如果查询只返回ID,那对于查询缓存内存消耗是否重要?

时间:2016-03-10 20:39:16

标签: hibernate jpa ehcache

我在一段时间后得到了这个提示并构建了我的JPA Dao查找方法:

基本上,我只返回查询中的ID,而不是返回整个对象,然后使用findById查找我知道在二级缓存中缓存的整个对象:

JPA查询:

SELECT u.id FROM User u WHERE email=:param

DAO方法:

public User findByEmail(String parameter){
    TypedQuery<Long> q = getEntityManager().createNamedQuery("User.findByEmail", Long.class);
    q.setParameter("param", parameter);
    q.setHint("org.hibernate.cacheable", true);
    q.setHint("org.hibernate.cacheRegion", "query.user");
    List<Long> res = q.getResultList();
    if (res != null && res.size() > 0) {
        return findById(res.get(0));
    }
    return null;
}

但现在我查看了一些博文,例如:enter link description here 最具体的是:

  

查询缓存在概念上看起来像一个哈希映射,其中密钥由查询文本和参数值组成,值是与查询匹配的实体ID列表:

但如果是这种情况,我只阅读并在实际查询中返回ID是多少?无论如何,对象都不存储在查询缓存中,只存储在id中。似乎hibernate已经在做我想要优化的事情了吗?

好的,当我从数据库中读取它时,我认为需要在内存中读取少一点数据,但除此之外我不确定它是否重要。

我正在做的事情还有其他好处,即只是阅读身份证,还是有缺点?

0 个答案:

没有答案