一尘不染

为什么在Hibernate 5中不赞成使用条件查询?

hibernate

众所周知,在 Hibernate 5中* 不建议使用 条件查询 。在以前的Hibernate版本中,该功能非常有用。
而且它的性能仍然优于HQL。
* __

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

这是从这里。

Hibernate提供了一个较旧的旧式org.hibernate.CriteriaAPI,应将其视为已弃用。没有针对这些API的功能开发。最终,特定于Hibernate的条件功能将被移植为JPA的扩展
javax.persistence.criteria.CriteriaQuery。有关org.hibernate.CriteriaAPI的详细信息
,请参见旧式hibernate条件查询。


阅读 304

收藏
2020-06-20

共1个答案

一尘不染

我们不推荐使用Criteria 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,这些API旨在实现同步互补。

2020-06-20