使用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);


除了性能,还有其他原因,一个原因要比另一个更好,或者仅仅是我们觉得更舒适的一个原因。

最佳答案

完全没有性能差异。唯一发生的是将单字符串形式解析为组件。使用最方便的方式。或者使用QueryDSL的JDOQL。 JDO3.x计划提供一种类型安全的可重构查询API,但是类似于QueryDSL的某些可用的东西(与JPA2 Criteria不同)

09-03 19:18