Получить все данные из таблицы с Hibernate

Получить все данные из таблицы с Hibernate

1. обзор

В этом кратком руководстве мы рассмотрим, как получить все данные из таблицы в Hibernate, используя JPQL или Criteria API.

JPQL предоставляет нам более быструю и простую реализацию, а использование Criteria API более динамично и надежно.

2. JPQL

JPQL предоставляет простой и понятный способ получить все сущности из таблицы.

Давайте посмотрим, как может выглядеть извлечение всех учащихся из таблицы с помощью JPQL:

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

МетодcreateQuery() нашего сеанса Hibernate получает типизированную строку запроса в качестве первого аргумента и тип объекта в качестве второго. Мы выполняем запрос с вызовом методаgetResultList(), который возвращает результаты в виде типизированногоList.

Simplicity is the advantage of this approach. JPQL очень близок к SQL, поэтому его легче писать и понимать.

3. Критерии API

Criteria API обеспечивает динамический подход к построению запросов JPA.

Это позволяет нам создавать запросы путем создания экземпляров объектов Java, которые представляют элементы запроса. И это более чистое решение, если запросы строятся из множества необязательных полей, потому что оно устраняет множество конкатенаций строк.

Мы только что видели запрос на выборку с использованием JPQL. Давайте посмотрим на его эквивалент с помощью Criteria API:

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();
}

Сначала мы получаемCriteriaBuilder, который мы используем для создания типизированногоCriteriaQuery. Позже мы установим корневую запись для запроса. И, наконец, выполняем его методомgetResultList().

Теперь этот подход аналогичен тому, что мы делали ранее. But, it gives us complete access to the Java language to articulate greater nuance in formulating the query.

Помимо того, что JPQL-запросы и JPA-запросы основаны на критериях, они одинаково эффективны.

4. Заключение

В этой статье мы продемонстрировали, как получить все сущности из таблицы, используя JPQL или Criteria API.

Доступен полный исходный код примераover on GitHub.