2015-12-03 6 views
7

Meine Frage ist, dass ich nicht verstanden habe, wie würde ich wissen, dass ich Native Abfrage anstelle von Hibernate-Abfragesprache verwenden muss?In welchen Fällen verwenden wir native Abfrage und HQL-Abfrage?

+1

Ich würde HQL verwenden, wenn möglich (und Sie müssen eine Abfrage verwenden sowieso) und nativen Abfragen nur in Fällen, in denen HQL wird nicht wie gewünscht arbeiten (was der Fall für einen vernünftigen Code so gut wie nie sein sollte). – Thomas

Antwort

5

Warum verwenden wir HQL?

Obwohl es möglich ist, Abfragen nativen SQL direkt mit einer Hibernate-basierten Persistenz-Schicht zu verwenden, ist es effizienter, HQL zu verwenden statt. Die Gründe für die Wahl HQL über die beiden anderen Methoden sind unter

gegeben
  1. HQL ermöglicht darstellen SQL-Abfragen in der objektorientierten Begriffen von Objekten und Eigenschaften von Objekten verwendet wird.
  2. Anstatt einfache Daten zurückzugeben, geben HQL-Abfragen die Abfrageergebnisse in Form von Objekt (en)/Tupeln von Objekten zurück, auf die programmgesteuert zugegriffen werden kann. Dieser Ansatz beseitigt die routinemäßige Aufgabe, Objekte von Grund auf neu zu erstellen und mit dem "resultset" zu füllen, das aus der Datenbank abgefragt wird.
  3. HQL unterstützt vollständig polymorphe Abfragen. Das heißt, zusammen mit dem Objekt, das als Abfrageergebnis zurückgegeben werden soll, müssen alle untergeordneten Objekte (Objekte von Unterklassen) des angegebenen Objekts zurückgegeben werden.
  4. HQL ist einfach zu erlernen und zu implementieren, da seine Syntax und Funktionen SQL sehr ähnlich sind.
  5. HQL enthält viele erweiterte Funktionen wie Paginierung, Fetch-Verknüpfung mit dynamischer Profilerstellung usw. im Vergleich zu SQL.
  6. HQL ermöglicht das Schreiben von datenbankunabhängigen Abfragen, die in den nativen SQL-Dialekt der zugrunde liegenden Datenbank unter Runtime konvertiert werden. Dieser Ansatz hilft, die zusätzlichen Funktionen abzurufen, die die native SQL-Abfrage bietet, ohne eine nicht standardmäßige native SQL-Abfrage zu verwenden.

Einschränkungen von HQL:

  1. HQL-Abfragen können nicht DDL-Operationen durchführen
  2. HQL-Abfragen können nicht in PL/SQL Programming
  3. HQL-Abfragen einfügen nicht verwendet werden können verwendet werden, um Einzelner Datensatz in Tabelle
  4. HQL-Abfragen ergeben eine vernachlässigbare Leistungseinbuße, da Konvertierung (HQL zu SQL) beim Vergleich von SQL.
Verwandte Themen