Abrufen aller Daten aus einer Tabelle mit Ruhezustand

1. Übersicht

In diesem kurzen Tutorial sehen wir uns an, wie Sie alle Daten aus einer Tabelle mit Hibernate mithilfe von JPQL oder der Criteria-API abrufen.

JPQL bietet uns eine schnellere und einfachere Implementierung, während die Verwendung der Kriterien-API dynamischer und robuster ist.

2. JPQL

JPQL bietet eine einfache und unkomplizierte Möglichkeit, alle Entitäten aus einer Tabelle abzurufen.

Mal sehen, wie es aussehen könnte, alle Schüler mit JPQL aus einer Tabelle abzurufen:

public List findAllStudentsWithJpql() { return session.createQuery("SELECT a FROM Student a", Student.class).getResultList(); } 

Die createQuery () -Methode unserer Hibernate-Sitzung empfängt eine typisierte Abfragezeichenfolge als erstes Argument und den Typ der Entität als zweites. Wir führen die Abfrage mit einem Aufruf der Methode getResultList () aus , die die Ergebnisse als typisierte Liste zurückgibt .

Einfachheit ist der Vorteil dieses Ansatzes. JPQL kommt SQL sehr nahe und ist daher leichter zu schreiben und zu verstehen.

3. Kriterien-API

Die Kriterien-API bietet einen dynamischen Ansatz zum Erstellen von JPA-Abfragen.

Es ermöglicht uns, Abfragen zu erstellen, indem wir Java-Objekte instanziieren, die Abfrageelemente darstellen. Und es ist eine sauberere Lösung, wenn Abfragen aus vielen optionalen Feldern erstellt werden, da dadurch viele Verkettungen von Zeichenfolgen vermieden werden.

Wir haben gerade eine Select-All-Abfrage mit JPQL gesehen. Schauen wir uns das Äquivalent mithilfe der Kriterien-API an:

public List findAllStudentsWithCriteriaQuery() { CriteriaBuilder cb = session.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Student.class); Root rootEntry = cq.from(Student.class); CriteriaQuery all = cq.select(rootEntry); TypedQuery allQuery = session.createQuery(all); return allQuery.getResultList(); } 

Erstens erhalten wir eine CriteriaBuilder die wir eine typisierte erstellen verwenden Criteria Abfrage . Später legen wir den Stammeintrag für die Abfrage fest. Und zuletzt führen wir es mit einer getResultList () -Methode aus.

Dieser Ansatz ähnelt dem, was wir zuvor getan haben. Es gibt uns jedoch vollständigen Zugriff auf die Java-Sprache, um die Formulierung der Abfrage nuancierter zu gestalten.

JPQL-Abfragen und auf JPA-Kriterien basierende Abfragen sind nicht nur ähnlich, sondern auch gleich leistungsfähig.

4. Fazit

In diesem Artikel haben wir gezeigt, wie alle Entitäten mithilfe der JPQL- oder Kriterien-API aus einer Tabelle abgerufen werden.

Der vollständige Quellcode für das Beispiel ist auf GitHub verfügbar.