Декларативный JDOQL против однострочного JDOQL: производительность
При запросах с помощью 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 ответ
Решение
Нет разницы в производительности вообще. Единственное, что происходит, это то, что однострочная форма разбирается на компоненты. Используйте то, что вы считаете наиболее удобным. В качестве альтернативы используйте QueryDSL's JDOQL. В JDO3.x предусмотрено предоставление API-интерфейса рефактивных запросов для безопасного типа, но его можно использовать (в отличие от критериев JPA2), похожего на QueryDSL.