【问题标题】:JQPL createQuery vs Entity object loopJPQL createQuery vs 实体对象循环
【发布时间】:2014-02-04 18:25:58
【问题描述】:

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

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

我了解这两段代码的作用,并且我了解在给定大型数据集的情况下,第二种方法更有效。但是,鉴于只有几条记录,有什么理由不进行查询而不是让实体进行连接并循环您的记录集?

【问题讨论】:

    标签: java jpa jpql


    【解决方案1】:

    无论记录数量如何,从不使用第一种方法的一些原因:

    • 比较冗长

    • 意图不太清楚,因为杂乱无章

    • 性能更差,可能从最初的实体开始下降

    • 每增加一个实体,第一种方法的性能会比第二种方法下降得更多

    • 这是出乎意料的 - 大多数有经验的开发人员不会这样做 - 因此需要更多的认知努力让其他开发人员理解。他们会假设您这样做是出于一个令人信服的理由,并且会寻找那个原因却找不到。

    【讨论】:

      猜你喜欢
      • 2014-04-17
      • 2015-01-07
      • 2018-03-13
      • 1970-01-01
      • 2019-12-08
      • 2010-10-17
      • 1970-01-01
      • 2017-09-20
      • 2012-01-05
      相关资源
      最近更新 更多