是否仍建议使用旧标准API?

时间:2016-04-29 16:34:17

标签: hibernate jpa criteria

我的团队在Hibernate 3.x下长期使用hibernate Criteria API。最近,我们想将Hibernate版本升级到5,但似乎不再推荐使用Criteria API。但JPA看起来像一个完全不同的API,我们不想冒险。我们应该继续使用旧标准吗?

2 个答案:

答案 0 :(得分:3)

嗯,Version 5.0 Criteria Chapter中的警告非常大:

  

Hibernate提供旧版的旧版org.hibernate.Criteria API,应该被视为已弃用。没有功能开发将针对这些API。最终,特定于Hibernate的标准功能将被移植为JPA javax.persistence.criteria.CriteriaQuery的扩展。有关org.hibernate.Criteria API的详细信息,请参阅Legacy Hibernate Criteria Queries。

还有更多:

  

旧版Hibernate org.hibernate.Criteria查询API的用户会认识到一般方法,但我们认为JPA API更优越,因为它代表了从该API中汲取的经验教训。

所以,看起来这真的取决于你的团队。我花了一段时间才习惯了JPA API,但它现在非常顺利。我已经退回到Hibernate以获得非常大的提取性能,但总的来说,使用任何JPA都没有任何问题。我倾向于使用@NamedQueries作为基本访问,而Criteria API则需要更动态的内容。

编辑:更新我能够解决性能问题,应用程序现在是严格的JPA。

答案 1 :(得分:0)

如果由于时间限制/项目期限/其他风险的原因,您无法将代码从旧版Hibernate Criteria API移动到JPA API,那么您至少应该设置一些时间轴来回到它。 Hibernate很可能会在接下来的两个主要版本中完全删除已弃用的Criteria API。