首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA CriteriaQuery与迭代

JPA CriteriaQuery与迭代
EN

Stack Overflow用户
提问于 2014-05-28 11:17:06
回答 1查看 283关注 0票数 0

我想知道如何更好地处理JPA中的where语句。

有两种方法。

或者使用条件查询,如

代码语言:javascript
复制
 CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Profile> c = cb.createQuery(Profile.class);
    Root<Profile> root = c.from(Profile.class);
    c.where(cb.equal(root.get(Profile_.email), email));
    List<Profile> resultList = em.createQuery(c).getResultList();

或者选择整个表并在java中迭代,如

代码语言:javascript
复制
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Profile> c = cb.createQuery(Profile.class);
//    Root<Profile> root = c.from(Profile.class);
//    c.where(cb.equal(root.get(Profile_.email), email));
    List<Profile> resultList = em.createQuery(c).getResultList();

    for (Profile profile : resultList) {
      if (profile.getEmail().equals(email)) {
        //todo
      }
    }

优先的方式是什么?哪种赞成和反对存在?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-28 11:21:31

在第一种情况下产生的选择可以比第二种情况下的实例过滤速度快几个数量级。

数据库选择数据的速度非常快,效率很高,所以我不知道第一种方法的任何缺点。

第二种方法的缺点是使用第一种方法时不需要执行的任务:

  • 表中的所有对象都必须实例化--取决于记录的数量,这可能会非常昂贵,最终会打破VM的内存限制。
  • 必须迭代所有对象,调用某些方法,进行比较,不需要的实例垃圾收集--再次浪费时间和资源。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23910154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档