Obtenir toutes les données d'une table avec Hibernate

1. Vue d'ensemble

Dans ce tutoriel rapide, nous verrons comment obtenir toutes les données d'une table avec Hibernate à l'aide de JPQL ou de l'API Criteria.

JPQL nous fournit une implémentation plus rapide et plus simple tout en utilisant l'API Criteria est plus dynamique et robuste.

2. JPQL

JPQL fournit un moyen simple et direct d'obtenir toutes les entités d'une table.

Voyons à quoi cela pourrait ressembler de récupérer tous les étudiants d'une table en utilisant JPQL:

public List findAllStudentsWithJpql() { return session.createQuery("SELECT a FROM Student a", Student.class).getResultList(); } 

La méthode createQuery () de notre session Hibernate reçoit une chaîne de requête typée comme premier argument et le type de l'entité comme second. Nous exécutons la requête avec un appel à la méthode getResultList () qui renvoie les résultats sous forme de List typé .

La simplicité est l'avantage de cette approche. JPQL est très proche de SQL et est donc plus facile à écrire et à comprendre.

3. API de critères

L'API Criteria fournit une approche dynamique pour la création de requêtes JPA.

Il nous permet de créer des requêtes en instanciant des objets Java qui représentent des éléments de requête. Et c'est une solution plus propre si les requêtes sont construites à partir de nombreux champs facultatifs, car elle élimine beaucoup de concaténations de chaînes.

Nous venons de voir une requête de sélection de tout utilisant JPQL. Jetons un coup d'œil à son équivalent en utilisant l'API Criteria:

public List findAllStudentsWithCriteriaQuery() { CriteriaBuilder cb = session.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Student.class); Root rootEntry = cq.from(Student.class); CriteriaQuery all = cq.select(rootEntry); TypedQuery allQuery = session.createQuery(all); return allQuery.getResultList(); } 

Tout d'abord, nous obtenons un CriteriaBuilder que nous utilisons pour créer une requête de critères typée . Plus tard, nous définissons l'entrée racine de la requête. Et enfin, nous l' exécutons avec une méthode getResultList () .

Maintenant, cette approche est similaire à ce que nous avons fait plus tôt. Mais, cela nous donne un accès complet au langage Java pour articuler une plus grande nuance dans la formulation de la requête.

En plus d'être similaires, les requêtes JPQL et les requêtes basées sur des critères JPA sont également performantes.

4. Conclusion

Dans cet article, nous avons montré comment obtenir toutes les entités d'une table à l'aide de JPQL ou de l'API Criteria.

Le code source complet de l'exemple est disponible à l'adresse over sur GitHub.