Основные отличия Criteria API от HQL в Hibernate:
- HQL предназначен для выполнения операций как select, так и non-select с данными, а Criteria предназначен только для выбора данных. 12
- HQL подходит для выполнения статических запросов, а Criteria — для динамических. 12
- HQL не поддерживает концепцию разбивки на страницы, а Criteria позволяет добиться этого. 12
- Выполнение Criteria раньше занимало больше времени, чем выполнение HQL. 1
- С Criteria можно избежать SQL-инъекции из-за динамической генерации запросов, а в HQL, поскольку запросы либо фиксированы, либо параметризованы, защиты от SQL-инъекции нет. 12
Criteria API более объектно-ориентирован и позволяет сократить необходимый код. 3 Может быть рекомендован в проектах с большим количеством запросов с критериями. 3