Hibernate Query Language
Die Hibernate Query Language (HQL) ist eine Abfragesprache, die aus dem HiberNate O-R Mapper Projekt entstanden ist und die Objektorientierte Programmierung mit einer relationalen Datenbank verbindet.
Die Hibernate Query Language basiert im Groben auf SQL und erlaubt Entity Relationship-Referenzen in einem objektorientierten Kontext.
Dadurch können explizite SQL Joins vereinfacht oder sogar vermieden werden. Implizite Verknüpfungen zwischen Warehouse-Tabellen und Location-Tabellen sind mit HQL möglich. Die Abfragen können datenbankunabhängig sein.
Der HiberNate O-R Mapper wandelt in diesem Fall die Abfrage in ein auf den entsprechenden Datenbanktyp passendes SQL-Statement um. Die Hibernate Query Language ist objektbasierend. Zu beachten ist die strikte Einhaltung von Groß- und Kleinschreibung.
Hibernate Query Language (HQL) - Aufbau und Funktion
Der Aufbau der Hibernate Query Language ist SQL sehr ähnlich. Mit HQL ist es möglich auf ein Objekt direkt zuzugreifen. Zum Beispiel können alle Instanzen mit HQL der Klasse "FIRMA" ausgegeben werden. In diesem Fall lautet die Abfrage:
SELECT * FROM obj.FIRMA
Die Select-Klausel kann folgendermaßen verwendet werden:
SELECT FIR.NAME FROM FIRMA AS FIR;
Ein SQL-Join mit der Hibernate Query Language sieht zum Beispiel folgendermaßen aus:
SELECT * FROM FIRMA AS FIR INNER JOIN FIR.FIR_ADR AS FIR_ADR INNER JOIN FIR.RECHNUNG AS RECHNUNG
Soll das Abfrageergebnis nach der Firmenanschrift der abgefragten Werte sortiert werden, sieht die Abfrage in Hibernate Query Language (HQL) folgendermaßen aus:
SELECT FIR_ADR.ADRUSER FROM FIRMA AS FIR INNER JOIN FIR.FIR_ADR AS FIR_ADR ORDER BY FIR_ADR.ADRUSER
Hibernate Query Language (HQL) Beispiel
Im Hibernate Query Language (HQL) Beispiel sollen die Rechnungsnummern und deren Gesamtsummen eines Kunden aufgelistet werden. Dabei sollen nur die Rechnungen angezeigt werden, die eine bestimmte Mindestgrenze von 1000,00 € überschreiten. Das Hibernate Query Language-Statement wird folgendermaßen aufgebaut:
SELECT FIR.NAME, RECHNUNG.RENR, SUM(RECH_POX.MENGE*ARTIKEL.PREIS) FROM FIRMA AS FIR INNER JOIN FIR.RECHNUNG AS RECHNUNG INNER JOIN RECHNUNG.RECH_POX AS RECH_POX INNER JOIN ARTIKEL AS ARTIKEL WHERE FIR.NAME = :FIRMA GROUP BY RECHNUNG.RENR HAVING SUM(RECH_POX.MENGE*ARTIKEL.PREIS) > 1000 ORDER BY RECHNUNG.RENR
Der HiberNate O-R Mapper übersetzt das Hibernate Query Language-Statement in das folgende SQL-Statement in einer relationalen Datenbank:
SELECT FIR.NAME, RECHNUNG.RENR, SUM(RECH_POX.MENGE*ARTIKEL.PREIS) FROM FIRMA AS FIR INNER JOIN RECHNUNG AS RECHNUNG ON FIR.FIRNR = RECHNUNG.FIRNR INNER JOIN RECHNUNG.RECH_POX AS RECH_POX ON RECHNUNG.RENR = RECHNUNG.RENR INNER JOIN ARTIKEL AS ARTIKEL ON RECH_POX.ARTNR = ARTIKEL.ARTNR WHERE FIR.NAME = :FIRMA GROUP BY FIR.NAME, RECHNUNG.RENR HAVING SUM(RECH_POX.MENGE*ARTIKEL.PREIS) > 1000 ORDER BY RECHNUNG.RENR
Hibernate Query Language - Definition & Erklärung - Zusammenfassung
Im Zusammenhang mit dem Lexikoneintrag Hibernate Query Language sollte man sich folgende Punkte merken:
- Die Hibernate Query Language (HQL) ist eine Abfragesprache, die aus dem HiberNate O-R Mapper Projekt entstanden ist und die Objektorientierte Programmierung mit einer relationalen Datenbank verbindet.
- Die Hibernate Query Language basiert im Groben auf SQL und erlaubt Entity Relationship-Referenzen in einem objektorientierten Kontext.
- Der Aufbau der Hibernate Query Language ist SQL sehr ähnlich.