为什么在Hibernate 5中不推荐使用条件查询?

时间:2016-07-19 01:23:42

标签: java hibernate hibernate-criteria

正如我们所知,标准查询已在 Hibernate 5 中弃用。它在以前版本的Hibernate中是如此有用的功能。 它仍然比HQL表现更好。

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

此问题也不是this question的重复,因为我想知道标准查询弃用的原因。

这是here.

  

Hibernate提供较旧的遗留org.hibernate.Criteria API   应被视为已弃用。没有功能开发的目标   那些API。最终,Hibernate特定的标准功能将是   移植为JPA的扩展   javax.persistence.criteria.CriteriaQuery。有关的详细信息   org.hibernate.Criteria API,请参阅旧版Hibernate条件查询。

1 个答案:

答案 0 :(得分:11)

我们弃用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同步互补。