Почему запрос критериев не рекомендуется в Hibernate 5?

Как мы уже знаем, критерий запроса устарел в Hibernate 5. Это была такая полезная функция в предыдущих версиях Hibernate. И он по-прежнему работает лучше, чем HQL.

Итак, в чем причина его устаревания в Hibernate 5?

И этот вопрос не является дубликатом этого вопроса, поскольку я хочу знать причину отклонения запроса критериев.

Это от здесь.

Hibernate предлагает более старый, устаревший API org.hibernate.Criteria, который следует считать устаревшим. Никакая функция разработки не будет нацелена эти API. В конечном счете, характеристики Hibernate-специфических критериев будут портированы как расширения JPA javax.persistence.criteria.CriteriaQuery. Подробнее о org.hibernate.Criteria API, см. "Запросы на критерии устаревшего спящего режима".

Ответ 1

Мы осуждаем API критериев вместо поддержки расширения JPA.

Рассмотрим это:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
HibernateCriteria hc = cb.unwrap( HibernateCriteria.class );
...
query.where( hc.someAwesomeThing( ... ) );
List<SomeEntity> entities = entityManager.createQuery( query ).getResultList();

В отличие от комментариев, мы делаем намерены продолжать предоставлять Hibernate-специфические функции, но мы хотим представить их через стандартный API вместо того, чтобы пытаться управлять двумя очень разными API-интерфейсами чтобы быть взаимодополняющим в синхронизации.