Kriterien v/s HQL .wer ist schneller?
Habe ich gelesen, einige anwers, aber ich bin immer noch verwirrt. ¿Warum? weil die Unterschiede, die Sie erwähnt haben, beziehen sich nicht mit der Leistung. Sie sind bezogen mit einfachem Gebrauch.(Objetc(Kriterien) und SQL(hql)). Aber ich würde gerne wissen, ob "Kriterien" langsamer ist als die hql aus irgendeinem Grund.
Las ich dies in einem anderen anwers
"Es gibt einen Unterschied in Sachen Leistung zwischen HQL und criteriaQuery, jedes mal, wenn Sie Feuer auf eine Abfrage mit criteriaQuery, es erstellt einen neuen alias für den Tabellennamen, die nicht reflektieren, in den letzten abgefragt cache für jedes DB. Dies führt zu einem overhead der Kompilierung des generierten SQL, wobei mehr Zeit für die Ausführung." von Varun Mehta.
Dies ist sehr nah, ABER! ich lese auf einer anderen website(http://gary-rowe.com/agilestack/tag/hibernate/) ist Dies nicht mehr der Fall mit Hibernate 3.3 und höher(bitte Lesen Sie dies: 9) Hibernate ist langsam, da die generierte SQL von der Kriterien-Schnittstelle ist nicht konsistent)
Ich habe schon einige Tests versucht herauszufinden, die Unterschiede, aber beide erzeugen qry ist und es nicht ändern Sie den alias der Tabelle.
Ich bin sehr verwirrt. Wenn jemand weiß, der Hauptgrund, bitte, könnten Sie uns helfen. Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Insgesamt, wenn Sie verwenden, HQL oder Kriterien, um Ihre endgültige SQL-sehen Sie nicht viel Unterschied in der Leistung in den neueren Versionen von Hibernate (version 3.3 und höher).
Um dies zu testen, müssen Sie erstellen eine repräsentative Abfrage in beiden HQL und die Verwendung der Kriterien-Schnittstelle. Dann melden Sie die folgende SQL-Anweisung aus zunehmend älteren Versionen von Hibernate (vielleicht mit Hilfe von Maven zu ermöglichen eine schnelle version ändert). Sie werden bemerken, dass, wie der Hibernate-Versionen zu verringern, die Sie werden sehen, Veränderungen in den letzten SQL.
Ist, gibt es wenig Punkt im versuchen zu optimieren zwischen HQL und Kriterien im code, da die überwiegende Mehrheit der Zeit, die verlorenen werden in den Netzwerk-Datenverkehr zwischen Ihrer Anwendung und der Datenbank. Natürlich, dies setzt Voraus, dass Sie eine wohlgeformte Abfrage nicht erforderlich ist, mehrere full-table-scans über hundert Millionen Zeilen oder so etwas.
Den zitierte blog ist der Versuch zu entlarven Mythen also seien Sie vorsichtig, dass Sie nicht den Titel aus dem Zusammenhang (Hervorhebung von mir):
Also das blog im wesentlichen weist darauf hin, dass der Hauptunterschied ist, dass die Kriterien-Schnittstelle einführen, die ein paar Millisekunden der zusätzliche Verarbeitungsaufwand kann vermieden werden, indem eine direkte HQI-Ansatz. HQL ist auch ein wenig mehr prägnante Ausdruck der Abfrage, die viele attraktiv finden.
Kurz gesagt, der Unterschied ist so klein, dass Sie nicht brauchen, sich darum zu kümmern.