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

时间:2018-06-04 20:50:26

标签: hibernate jpa hibernate-5.x javax.persistence hibernate-5

最近我的团队从Hibernate 3升级到了Hibernate 5,所以我正在进行迁移工作。现在,当我尝试使用CriteriaQuery类时,eclipse显示它可以从javax.persistence.criteria'中导入。以及' org.hibernate.criterion'包。

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

所以我在这里对使用哪一个感到困惑。

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

1 个答案:

答案 0 :(得分:1)

来自Hibernate docs:

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

您应该使用受Hibernate影响很大的JPA条件查询。在开始时,Hibernate 5出现时存在相当多的差异(例如,LAZY vs EAGER fetch as defaults on mappings。),大多数差异已由Hibernate采用JPA行为解决。据我所知,大多数Hibernate行为现在要么与JPA标准相同或类似,并且只是为了传统目的而维护。