Qu'est-ce que HQL?

HQL est une abréviation de hibernate query language. Hibernate est une plate-forme pour connecter les bases de données traditionnelles au langage orienté objet (en particulier JAVA). C'est un langage de requête en hibernate qui est similaire à SQL dans le SGBDR traditionnel, sauf pour le fait que nous utilisons une entité dans HQL au lieu de tables. Il est écrit intégré dans du code JAVA et diverses fonctions de la bibliothèque JAVA sont utilisées pour convertir HQL en SQL. Il peut être appelé comme un langage orienté objet en relief avec des instructions de requête SQL. Il s'agit d'un langage flexible et convivial possédant sa propre syntaxe et grammaire pour récupérer, stocker et mettre à jour les informations de la base de données. Il réduit l'inadéquation d'impédance entre JAVA et RDBMS.

Pourquoi avons-nous besoin de HQL?

Comme l'importance de JAVA en tant que langue pour des plates-formes comme Internet augmente, nous trouvons plus pertinent de connecter notre application basée sur JAVA au back-end à l'aide de la mise en veille prolongée. Hibernate utilise à la place le langage HQL pour établir la connexion entre la base de données et le frontal.

Nous avons besoin de HQL lorsque nous voulons sélectionner certains champs et colonnes particuliers selon nos besoins. Les méthodes adoptées plus tôt n'étaient pas assez efficaces pour descendre à ce niveau, par exemple en récupérant l'ensemble de résultats ou l'ensemble de données de la base de données comme un enregistrement complet ayant le nombre de lignes et de colonnes. Cette approche ne donne pas la flexibilité d'affiner la recherche et rend l'application lourde et lente. Cette approche est utilisée par les connecteurs JDBC, asp.net et de nombreuses autres langues. L'utilisation de HQL réduit cet intervalle de temps et fournit des résultats spécifiques. Il est donc plus pertinent d'être utilisé dans un environnement en temps réel où JAVA est impliqué dans le front-end.

Comment fonctionne HQL?

HQL est un format de fichier XML pour lier java du front-end à la base de données du back-end. Les requêtes SQL que nous lançons directement dans la base de données à l'aide de requêtes sql peuvent également être écrites en hql. Le HQL a sa propre syntaxe où nous pouvons écrire la requête, puis cette requête est convertie en instructions SQL qui peuvent être comprises par la base de données. Ceci est écrit en langage java pour réduire le décalage d'impédance.

HQL est un langage insensible à la casse, à l'exception du nom des classes et des entités. Par exemple: org.hibernate.eg.test n'est pas égal à org.hibernate.eg.Test puisque le «test» et le «Test» sont deux entités différentes dans HQL.

Remarque: Nous pouvons utiliser SQL dans les requêtes HQL directement en utilisant le code natif.

Avantages de HQL

Le langage HQL présente plusieurs avantages:

  1. Le codeur n'a aucune obligation d'apprendre le langage SQL.
  2. HQL est orienté objet et ses performances sont bonnes lorsque nous lions notre application frontale au backend.
  3. HQL dispose d'une mémoire cache et améliore ainsi la vitesse.
  4. HQL prend en charge les fonctionnalités populaires des concepts OOP tels que le polymorphisme, l'héritage et l'association.

Syntaxe avec exemples de requêtes HQL

Voici quelques requêtes simples en veille prolongée:

Clause FROM:

From eg.Test or From Test.

Cette instruction renverra toutes les instances de la classe. Dans ce cas, c'est Test. Nous pouvons également créer un alias pour par exemple: From Test comme test. Ici, «test» est l'alias de Test. Cet alias peut ensuite être utilisé ultérieurement au lieu de la classe.

Exemple 1

String hqlquery = "FROM Test";
Query q = session.createQuery(hqlquery);
List display = q.list();
AS Clause: From eg.Test AS T or From Test AS T.

Cette instruction est utilisée lorsque nous voulons créer des alias pour les principales classes de HQL. C'est une technique utile au cas où nous aurions de longues requêtes. Nous pouvons simplement attribuer la requête à l'alias, puis utiliser cet alias pour un traitement ultérieur des données. Le crénelage peut également être effectué sans le mot clé AS. Par exemple: D'après Test T.

Exemple # 2

String hqlquery = "FROM Test AS T";
Query q = session.createQuery(hqlquery);
List display = q.list();
WHERE Clause: From eg.Test T WHERE T.code=102 or From Test T WHERE T.code=102.

Cette clause est utilisée lorsque nous recherchons une donnée particulière dans la table de base de données. Donc, ici, si nous recherchons un enregistrement particulier sur la base du code de test que nous avons, cette clause est utilisée dans la requête. Cela aidera à affiner le critère de recherche. Si nous donnons la clé primaire f la table dans la clause where, alors nous devrions voir l'amélioration significative de la vitesse de recherche.

Exemple # 3

String hqlquery = "FROM Test T WHERE T.code = 102";
Query q = session.createQuery(hqlquery);
List display = q.list();
SELECT Clause:
From eg. SELECT T.number FROM Test T.

Cette clause est utilisée si nous voulons sélectionner une colonne particulière dans la table de base de données. C'est l'un des moyens d'affiner le critère de recherche. Quel que soit le nom de champ que nous donnons dans la clause select, seul celui qui sera sélectionné. Il est utile de récupérer une petite quantité de données si nous avons des informations spécifiques à ce sujet.

Exemple # 4

String hql = "SELECT E.firstName FROM Employee E";
Query query = session.createQuery(hql);
List results = query.list();
DELETE Clause:
String hqlexample = "DELETE FROM Test " +
"WHERE code = : test_code";

Cette clause de la requête peut être utilisée pour supprimer un ou plusieurs objets de la table de base de données connectée. Les objets "transitoires" et "persistants" peuvent être supprimés de cette façon. Il s'agit de la requête simple pour supprimer n'importe quel nombre de champs ou de tables de la base de données. Cela doit être utilisé avec précaution.

Exemple # 5

String hqlquery = "DELETE FROM Test " +
"WHERE code = : test_code";
Query q = session.createQuery(hqlquery);
q.setParameter("test_code", 102);
int display = q.executeUpdate();
System.out.println("Hence the number of rows modified are: " + display);

Conclusion

Par conséquent, HQL est un langage orienté objet élégant qui comble le fossé entre JAVA orienté objet et le système de gestion de base de données. Avec la part de marché la plus élevée, le langage de requête en veille prolongée devient un langage populaire sur lequel travailler.

Articles recommandés

Ceci est un guide pour HQL. Ici, nous discutons pourquoi avons-nous besoin de HQL avec les avantages, le travail et la syntaxe avec des exemples de requêtes. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Cadre Hibernate
  2. Session de mise en veille prolongée
  3. Questions d'entretiens chez Hibernate
  4. Qu'est-ce que Java Hibernate?