Comme nous le savons déjà, la requête de critère est déconseillée dans Hibernate 5 . C'était une fonctionnalité très utile dans les versions précédentes d'Hibernate. Et il fonctionne toujours mieux que HQL.
Alors, quelle est la raison de sa dépréciation dans Hibernate 5 ?
Et aussi cette question n'est pas un doublon de cette question car je veux connaître la raison de la dépréciation de la requête de critères.
Cela vient de ici.
Hibernate propose une ancienne version
org.hibernate.Criteria
API qui doit être considérée comme obsolète. Aucun développement de fonctionnalités ne ciblera ces API. À terme, les fonctionnalités de critères spécifiques à Hibernate seront portées en tant qu'extensions au JPAjavax.persistence.criteria.CriteriaQuery
. Pour plus de détails sur leorg.hibernate.Criteria
API, voir Requêtes de critères d'hibernation héritées.
Nous déconseillons l'API Criteria au lieu du support d'extension JPA.
Considère ceci:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
HibernateCriteria hc = cb.unwrap( HibernateCriteria.class );
...
query.where( hc.someAwesomeThing( ... ) );
List<SomeEntity> entities = entityManager.createQuery( query ).getResultList();
Contrairement aux commentaires, nous faisons avons l'intention de continuer à fournir des fonctionnalités spécifiques à Hibernate, mais nous voulons les introduire via l'API standard plutôt que d'essayer de gérer en gardant deux API très différentes qui sont censées être complémentaires. en synchronisation.