article(s) dans votre panier VOIR

Requêtage avec HQL avec Hibernate

  • Vidéo 43 sur 46
  • 2h45 de formation
  • 46 leçons

Un contenu flash devrait s'afficher ici. Votre navigateur ne comporte pas de plugin flash, ou il ne s'est pas correctement initialisé.

Vous pouvez télécharger le plugin flash depuis le site d'Adobe à l'adresse suivante : http://get.adobe.com/flashplayer/.

Pour accéder à la suite de cette formation, vous devez vous abonner.
previous
summary
resume
next
play
Requêtage avec HQL
00:00 / 05:38
HD
fullscreen
Je m’abonne
à partir de 16,6 € / mois
  • Visionnage en ligne
  • Accès illimité à toutes nos formations
OU
J'achète uniquement
la formation
29,90€
  • Téléchargement + VOD à vie
  • Exercice / Validation des acquis
  • Accès uniquement à cette formation

Sommaire de la formation

Détails de la formation

La Session Hibernate ne dispose pas d'autres méthodes de chargement que par l'identifiant avec :-get(...)-load(...)Pour effectuer des requêtes plus complexes Hibernate met à disposition un langage de requêtage nommé HQL. Hibernate Query Langage est un langage de requêtageIl va faire référence aux objets Java (notation « pointée ») et non aux données en base.Le HQL sera ensuite converti dans le SQL spécifique à la base de données utilisée. Le HQL est donc directement portable entre toutes les bases de données supportées par Hibernate. Les requêtes HQL s'utilisent au travers de l'interface org.hibernate.QueryQuery est instanciée depuis la Session, la requête HQL est transmise à la méthode createQuery(...)  Query query = session.createQuery("from User"); Une fois la requête composée, on dispose d'une instance de Query permettant d'exécuter le HQL et d'en récupérer le résultat :list :Retourne la liste des résultats sous forme de java.util.ListDans le cas ou la requête ne renverrait aucun résultat la liste retournée est vide. Query query = session.createQuery("from User");List<User> userList = query.list(); uniqueResult :Retourne une instance uniqueRetourne null si la requête ne renvoie aucun résultat.Lance l'exception NonUniqueResultException si la requête a générée plusieurs résultats. Tout comme en JDBC il est possible d'ajouter des paramètres à la requête :Soit par un numéro d'index ('?' dans le HQL)Soit en nommant les paramètres (':nomParametre' dans le HQL) Les opérations courantes du SQL restent valables :JointuresFonction d'agrégation (sum, max, count, ...)La clause « order by »La clause « group by »Les sous-requêtesLes expressions (mathématiques, de comparaison, …)Voir la documentation de référence :http://docs.jboss.org/hibernate/stable/core/reference/fr/html/queryhql.html L'interface Query est capable de gérer très facilement la pagination des résultats grâce à deux fonctions :setMaxResults(...) : nombre maximum de résultats renvoyéssetFirstResult(...) : indice du premier résultat à récupérer (à partir de 0)Exemple de récupération des résultats des données de la 3e page lors d'une pagination de 10 résultats par page: Query query = session.createQuery("from User");query.setFirstResult(30);query.setMaxResults(10);List<User> userList = query.list(); Grâce à la notation pointée, il est possible de faire des jointures implicites sur les attributs mappés en *-to-one Dans l'exemple ci-dessous la jointure entre la table utilisateur et la table adresse sera automatiquement générée en SQL sans qu'il y ait besoin de l'exprimer explicitement.