声明性JDOQL与单字符串JDOQL:性能

时间:2010-05-28 07:30:53

标签: java jdo datanucleus jdoql

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

JDOQL doc中的示例:

//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);

除了表演之外,是否有任何理由可以使用哪一个比另一个更好或者仅仅是我们感觉更舒服的那个。

1 个答案:

答案 0 :(得分:2)

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