В чем разница между пакетами javax.persistence.criteria и org.hibernate.criterion?
Недавно моя команда перешла с Hibernate 3 на Hibernate 5, поэтому я работаю над миграцией. Теперь, когда я пытаюсь использовать класс CriteriaQuery, eclipse показывает, что его можно импортировать как из пакетов 'javax.persistence.criteria', так и из пакетов 'org.hibernate.criterion'.
CriteriaQuery cq = getSession().getCriteriaBuilder().createQuery(MyClass.class);
Так что я немного запутался здесь, какой из них использовать.
Также было бы очень полезно, если бы кто-то мог объяснить разницу между ними (JPA и Hibernate), так как я не совсем уверен в этом концептуально и мне трудно узнать, что происходит под ними.
1 ответ
Из документов Hibernate:
This appendix covers the legacy Hibernate org.hibernate.Criteria API, which should be considered deprecated.
Вам следует использовать запрос критериев JPA, на который сильно повлиял Hibernate. В начале было довольно много различий (например, выборка LAZY vs EAGER в качестве значений по умолчанию для сопоставлений). Ко времени появления Hibernate 5 большинство различий было устранено с помощью поведения JPA в Hibernate. Насколько я понимаю, большая часть поведения Hibernate в настоящее время либо совпадает, либо соответствует стандартам JPA, и поддерживается только в унаследованных целях.