Was ist HQL?

HQL ist eine Abkürzung für Hibernate Query Language. Hibernate ist eine Plattform, um die traditionellen Datenbanken mit einer objektorientierten Sprache (insbesondere JAVA) zu verbinden. Es handelt sich um eine Abfragesprache im Ruhezustand, die mit Ausnahme der Tatsache, dass in HQL anstelle von Tabellen eine Entität verwendet wird, mit SQL in herkömmlichen RDBMS vergleichbar ist. Es ist in JAVA-Code eingebettet und verschiedene Funktionen aus der JAVA-Bibliothek werden verwendet, um HQL in SQL zu konvertieren. Es kann als objektorientierte Sprache mit SQL-Abfrageanweisungen bezeichnet werden. Es ist eine flexible und benutzerfreundliche Sprache mit eigener Syntax und Grammatik zum Abrufen, Speichern und Aktualisieren von Informationen aus der Datenbank. Es reduziert die Impedanzfehlanpassung zwischen JAVA und RDBMS.

Warum brauchen wir HQL?

Da JAVA als Sprache für Plattformen wie das Internet immer wichtiger wird, ist es für uns immer wichtiger, unsere JAVA-basierte Anwendung mit Hilfe des Ruhezustands mit dem Back-End zu verbinden. Hibernate verwendet stattdessen die HQL-Sprache, um die Verbindung zwischen der Datenbank und dem Front-End herzustellen.

Wir benötigen HQL, wenn wir bestimmte Felder und Spalten gemäß unseren Anforderungen auswählen möchten. Früher verwendete Methoden waren nicht effizient genug, um einen Drilldown auf diese Ebene durchzuführen, beispielsweise das Abrufen der Ergebnismenge oder der Datenmenge aus der Datenbank als ganzer Datensatz mit der Anzahl der Zeilen und Spalten. Dieser Ansatz bietet nicht die Flexibilität, die Suche einzugrenzen, und macht die Anwendung schwerfällig und träge. Dieser Ansatz wird von JDBC-Connectors, asp.net und vielen weiteren Sprachen verwendet. Die Verwendung von HQL verringert diese Zeitlücke und liefert spezifische Ergebnisse. Daher ist es relevanter, in einer Echtzeitumgebung verwendet zu werden, in der JAVA am Front-End beteiligt ist.

Wie funktioniert HQL?

HQL ist ein XML-Dateiformat zum Verknüpfen von Java vom Front-End mit der Datenbank im Back-End. Die SQL-Abfragen, die wir in der Datenbank direkt mit SQL-Abfragen auslösen, können auch in HQL geschrieben werden. Der HQL hat eine eigene Syntax, in der wir die Abfrage schreiben können und diese Abfrage dann in SQL-Anweisungen konvertiert wird, die von der Datenbank verstanden werden können. Dies ist in Java-Sprache geschrieben, um die Impedanzfehlanpassung zu reduzieren.

Bei HQL wird die Groß- und Kleinschreibung nicht berücksichtigt, mit Ausnahme der Namen von Klassen und Entitäten. Beispiel: org.hibernate.eg.test ist nicht gleich org.hibernate.eg.Test, da "test" und "Test" in HQL zwei verschiedene Entitäten sind.

Hinweis: Wir können SQL in HQL-Abfragen direkt mit dem nativen Code verwenden.

Vorteile von HQL

Es gibt mehrere Vorteile von HQL als Sprache:

  1. Der Codierer ist nicht verpflichtet, die SQL-Sprache zu lernen.
  2. HQL ist objektorientiert und seine Leistung ist gut, wenn wir unsere Front-End-Anwendung mit dem Backend verknüpfen.
  3. HQL verfügt über einen Cachespeicher und verbessert dadurch die Geschwindigkeit.
  4. HQL unterstützt beliebte Funktionen von OOP-Konzepten wie Polymorphismus, Vererbung und Assoziation.

Syntax zusammen mit Beispielen für HQL-Abfragen

Einige einfache Abfragen im Ruhezustand sehen folgendermaßen aus:

FROM-Klausel:

From eg.Test or From Test.

Diese Anweisung gibt alle Instanzen der Klasse zurück. In diesem Fall ist es Test. Wir können auch einen Alias ​​für zB: From Test als Test erstellen. Hier ist "Test" der Alias ​​von Test. Dieser Alias ​​kann dann später anstelle von class verwendet werden.

Beispiel 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.

Diese Anweisung wird verwendet, wenn Aliase für die Hauptklassen von HQL erstellt werden sollen. Dies ist eine nützliche Technik für den Fall, dass wir lange Fragen haben. Wir können die Abfrage einfach dem Alias ​​zuweisen und diesen Alias ​​für die weitere Datenverarbeitung verwenden. Aliasing kann auch ohne das Schlüsselwort AS erfolgen. Zum Beispiel: Aus Test T.

Beispiel # 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.

Diese Klausel wird verwendet, wenn wir nach bestimmten Daten in der Datenbanktabelle suchen. Wenn wir also auf der Grundlage des vorhandenen Testcodes nach einem bestimmten Datensatz suchen, wird diese Klausel in der Abfrage verwendet. Dies hilft bei der Eingrenzung des Suchkriteriums. Wenn wir den Primärschlüssel für die Tabelle in der where-Klausel angeben, sollten wir die signifikante Verbesserung der Suchgeschwindigkeit feststellen.

Beispiel # 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.

Diese Klausel wird verwendet, wenn wir eine bestimmte Spalte aus der Datenbanktabelle auswählen möchten. Dies ist eine der Möglichkeiten, das Suchkriterium einzugrenzen. Unabhängig vom Feldnamen, den wir in der select-Klausel angeben, wird nur dieser ausgewählt. Es ist nützlich, eine kleine Datenmenge abzurufen, wenn wir spezifische Informationen darüber haben.

Beispiel # 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";

Diese Klausel in der Abfrage kann verwendet werden, um ein oder mehrere Objekte aus der verbundenen Datenbanktabelle zu löschen. Auf diese Weise können sowohl die "transienten" als auch die "persistenten" Objekte gelöscht werden. Dies ist die einfache Abfrage zum Löschen einer beliebigen Anzahl von Feldern oder Tabellen aus der Datenbank. Dies sollte vorsichtig verwendet werden.

Beispiel # 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);

Fazit

Daher ist HQL eine elegante objektorientierte Sprache, die die Lücke zwischen objektorientiertem JAVA und Datenbankverwaltungssystem schließt. Mit dem höchsten Marktanteil wird die Sprache für Ruhezustandsabfragen zu einer beliebten Arbeitssprache.

Empfohlene Artikel

Dies ist eine Anleitung zu HQL. Hier diskutieren wir, warum wir HQL mit den Vorteilen, der Funktionsweise und der Syntax zusammen mit Abfragebeispielen benötigen. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Ruhezustand-Framework
  2. Ruhezustand
  3. Fragen in Vorstellungsgesprächen bei Hibernate
  4. Was ist Java Hibernate?