【问题标题】:Declarative JDOQL vs Single-String JDOQL : performance声明式 JDOQL 与单字符串 JDOQL:性能
【发布时间】:2010-05-28 07:30:52
【问题描述】:

使用 JDOQL 查询时,使用声明式版本和单字符串版本之间是否存在性能差异:

来自 JDOQL 文档的示例:

//Declarative JDOQL :
Query q = pm.newQuery(org.jpox.Person.class, "lastName == \"Jones\" && age < age_limit");
q.declareParameters("double age_limit");
List results = (List)q.execute(20.0);

//Single-String JDOQL :
Query q = pm.newQuery("SELECT FROM org.jpox.Person WHERE lastName == \"Jones\"" +
                      " && age < :age_limit PARAMETERS double age_limit");
List results = (List)q.execute(20.0);

除了性能之外,还有什么理由说明哪一种比另一种更适合使用,还是只是我们觉得更舒服的一种。

【问题讨论】:

  • 第一个表单至少支持 一些 重构(它在重命名 Person 类后仍然存在,但是属性更改仍然会搞砸)。

标签: java jdo datanucleus jdoql


【解决方案1】:

完全没有性能差异。唯一发生的事情是单字符串形式被解析为组件。使用您认为最方便的。或者使用 QueryDSL 的 JDOQL。 JDO3.x 已经计划提供一个类型安全的可重构查询 API,但是一些类似于 QueryDSL 的可用(与 JPA2 标准不同)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多