为什么标准查询在 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 同步互补。
我们已经知道,条件查询 在 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 JPAjavax.persistence.criteria.CriteriaQuery
. For details on theorg.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 同步互补。