Рубрики
Без рубрики

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

Исследуйте извлечение данных из таблицы с помощью JPQL и запросов критериев.

Автор оригинала: baeldung.

1. Обзор

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

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

2. JPQL

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

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

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

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

Простота является преимуществом такого подхода. JPQL очень близок к SQL, и поэтому его легче писать и понимать.

3. Критерии API

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

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

Мы только что видели запрос select-all с использованием JPQL. Давайте посмотрим на его эквивалент с помощью 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 , который мы используем для создания типизированного Критерия Запроса . Позже мы установим корневую запись для запроса. И, наконец, мы выполняем его с помощью метода getResultList () .

Теперь этот подход аналогичен тому, что мы делали ранее. Но это дает нам полный доступ к языку Java, чтобы сформулировать больше нюансов при формулировке запроса.

В дополнение к тому, что они похожи, запросы JPQL и запросы, основанные на критериях JPA, одинаково эффективны.

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

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

Полный исходный код для примера доступен на GitHub .