2015-10-20 29 views
27

Was sind die Unterschiede zwischen einer Abfrage, einer systemeigenen Abfrage, einer benannten Abfrage und einer typisierten Abfrage? Gibt es die "Alone-standing" -Abfrage überhaupt, oder ist es nur eine Abkürzung? In meinen Augen ist eine native Abfrage eine Abfrage, die in simple sql geschrieben wird, während eine benannte Abfrage sich auf entities bezieht (hibernate-mapping). Kann das jemand kurz erklären?Unterschied zwischen Abfrage, systemeigene Abfrage, benannte Abfrage und typisierte Abfrage

Antwort

29

Abfrage

Abfrage bezieht sich auf JPQL/HQL Abfrage mit Syntax ähnlich wie SQL allgemein verwendet, um DML-Anweisungen (CRUD Operationen) auszuführen.

In JPA können Sie eine Abfrage mit entityManager.createQuery() erstellen. Sie können in API für weitere Details suchen.

In Hibernate, verwenden Sie session.createQuery() "

NativeQuery

india Abfrage tatsächliche SQL-Abfragen bezieht sich (in Bezug auf tatsächliche Datenbankobjekte). Diese Abfragen die SQL-Anweisungen, die direkt ausgeführt werden können in Datenbank mit einem Datenbankclient

JPA: entityManager.createNativeQuery() Hibernate (Nicht-JPA-Implementierung): session.createSQLQuery()

NamedQuery

Ähnlich wie die Konstante definiert ist. Mit NamedQuery definieren Sie Ihre Abfrage, indem Sie ihr einen Namen geben. Sie können dies in der Zuordnungsdatei im Ruhezustand definieren oder auch Anmerkungen auf Entitätsebene verwenden.

TypedQuery

TypedQuery gibt Ihnen die Möglichkeit, die Art von Unternehmen zu erwähnen, wenn Sie eine Abfrage erstellen und daher danach jede Operation keine explizite Umwandlung der beabsichtigten Art benötigen. Während die normale Query-API nicht den genauen Typ des erwarteten Objekts zurückgibt und Sie umwandeln müssen.

+0

Gibt es eine Leistung, Durchsatz, Speicherverbrauch, Last App Server Unterschiede zwischen den verschiedenen Abfragen? Ich denke, dass NamedQuery Speicherverbrauch größer ist als Abfrage, aber ich kann nicht sagen, wo die Grenze der Abfragen zugunsten der einen oder anderen ist. Könntest du erklären? Danke im Voraus – Joe

Verwandte Themen