Alle Daten aus einer Tabelle mit Ruhezustand abrufen

Mit Hibernate alle Daten aus einer Tabelle abrufen

1. Überblick

In diesem kurzen Lernprogramm erfahren Sie, wie Sie mit Hibernate mithilfe von JPQL oder der Kriterien-API alle Daten aus einer Tabelle 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();
}

DiecreateQuery()-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 MethodegetResultList() aus, die die Ergebnisse als typisierteList zurückgibt.

Simplicity is the advantage of this approach. JPQL kommt SQL sehr nahe und ist daher einfacher zu schreiben und zu verstehen.

3. Kriterien-API

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

Es ermöglicht uns, Abfragen zu erstellen, indem Java-Objekte instanziiert werden, 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 Auswahlabfrage 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();
}

Zuerst erhalten wir einCriteriaBuilder, mit dem wir ein typisiertesCriteriaQuery erstellen. Später legen wir den Stammeintrag für die Abfrage fest. Und zuletzt führen wir es mit einergetResultList()-Methode aus.

Dieser Ansatz ähnelt dem, was wir zuvor gemacht haben. But, it gives us complete access to the Java language to articulate greater nuance in formulating the query.

JPQL-Abfragen und JPA-kriterienbasierte Abfragen sind nicht nur ähnlich, sondern auch äquivalent leistungsfähig.

4. Fazit

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

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