为什么标准查询在 Hibernate 5 中被弃用?

Why is criteria query deprecated in Hibernate 5?

我们已经知道,条件查询Hibernate 5 中已弃用。在以前的 Hibernate 版本中,这是一个非常有用的功能。 而且它的性能仍然优于 HQL。

那么它在 Hibernate 5 中被弃用的原因是什么?

而且这个问题不是 的重复问题,因为我想知道弃用条件查询的原因。

这是来自here.

Hibernate offers an older, legacy org.hibernate.Criteria API which should be considered deprecated. No feature development will target those APIs. Eventually, Hibernate-specific criteria features will be ported as extensions to the JPA javax.persistence.criteria.CriteriaQuery. For details on the org.hibernate.Criteria API, see Legacy Hibernate Criteria Queries.

我们弃用标准 API 以代替 JPA 扩展支持。

考虑一下:

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

与评论相反,我们 打算继续提供 Hibernate-specific 功能,但我们想通过标准 API 引入这些功能,而不是试图设法保持两个截然不同的 API 同步互补。