JPQL createQuery vs Entity对象循环

时间:2014-01-16 01:25:49

标签: java jpa jpql

我正在处理一些继承的代码,我不习惯实体框架工作。我试图弄清楚为什么以前的程序员按照他们的方式对事物进行编码,有时混合和匹配不同的查询数据的方式。

Deal d = _em.find(Deal.class, dealid);
List<DealOptions> dos = d.getDealOptions();
for(DealOptions o : dos) {
    if(o.price == "100") {
       //found the 1 item i wanted
    }
}

然后有时候我会看到这个:

Query q = _em.createQuery("select count(o.id) from DealOptions o where o.price = 100 and o.deal.dealid = :dealid");
//set parameters, get results then check result and do whatver

我理解这两段代码的作用,我理解,给定一个大型数据集,第二种方式更有效。但是,只给出一些记录,是否有任何理由不进行查询,只是让实体进行连接并循环记录集?

1 个答案:

答案 0 :(得分:2)

无论记录数量多少,都不会使用第一种方法:

  • 更详细

  • 意图不太明确,因为杂乱无章

  • 表现更差,可能会因为第一批实体而开始降级

  • 对于每个添加的实体,第一种方法的性能会比使用第二种方法的性能降低更多

  • 这是出乎意料的 - 大多数有经验的开发人员都不会这样做 - 因此需要更多的认知工作才能让其他开发人员理解。他们会认为你是出于某种令人信服的理由而这样做的,并且会在没有找到原因的情况下寻找原因。