Criteria API - преимущество наличия выражений параметров
В чем преимущество наличия выражений параметров в запросе API api?
ParameterExpression<String> myParameter= criteriaBuilder.parameter(String.class, "name");
criteriaBuilder.equal(someDatabaseColumn,myParameter);
query.setParameter(myParameter,"valueOfParameter");
или же
criteriaBuilder.equal(someDatabaseColumn,"valueOfParameter");
Оба пути, результат один и тот же. Но как это влияет на производительность запроса с использованием или без использования параметров.
1 ответ
Вы можете программно изменять свои запросы, не рискуя безопасностью (внедрение SQL). Кроме того, он позволяет вам иметь "слабосвязанный" код, разрабатывая более общий подход к вашей логике, вместо того, чтобы писать конкретные запросы SQL для строк. Вы не получите никакого преимущества в производительности, если ваши запросы не будут предварительно скомпилированы (запросы, определенные в сущности с @NamedQueries
).