Декларативный JDOQL против однострочного JDOQL: производительность - PullRequest
0 голосов
/ 28 мая 2010

При запросах с помощью 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);

Помимо производительности, есть ли причины, по которым один из них лучше использовать, чем другой, или это примерно то, с чем мы чувствуем себя более комфортно?

1 Ответ

2 голосов
/ 28 мая 2010

Нет разницы в производительности вообще. Единственное, что происходит, это то, что однострочная форма разбирается на компоненты. Используйте то, что вы считаете наиболее удобным. В качестве альтернативы используйте QueryDSL's JDOQL. В JDO3.x предусмотрено предоставление API-интерфейса рефактивных запросов для безопасного типа, но его можно использовать (в отличие от критериев JPA2), похожего на QueryDSL

.
...