javax.persistence.criteria 和 org.hibernate.criterion 包有什么区别?

What is the difference between javax.persistence.criteria and org.hibernate.criterion packages?

最近我的团队从 Hibernate 3 升级到 Hibernate 5,所以我正在处理迁移问题。现在,当我尝试使用 CriteriaQuery class 时,eclipse 显示它可以从 'javax.persistence.criteria' 和 'org.hibernate.criterion' 包中导入。

CriteriaQuery cq = getSession().getCriteriaBuilder().createQuery(MyClass.class);

所以我在这里对使用哪个有点困惑。

此外,如果有人能解释两者(JPA 和 Hibernate)之间的区别,那将非常有帮助,因为我在概念上不清楚这一点,并且很难了解下面发生的事情。

来自 Hibernate 文档:

This appendix covers the legacy Hibernate org.hibernate.Criteria API, which should be considered deprecated.

您应该使用受 Hibernate 影响很大的 JPA 条件查询。一开始,存在相当多的差异(例如,LAZY 与 EAGER fetch 作为映射的默认值。)到 Hibernate 5 出现时,大部分差异已通过采用 JPA 行为的 Hibernate 得到解决。据我了解,大多数 Hibernate 行为现在与 JPA 标准相同或相似,并且仅出于遗留目的而维护。