Перейти к основному содержимому

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

· 2 мин. чтения

1. Обзор

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

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

2. JPQL

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

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

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

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

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

3. API критериев

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

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

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

public List<Student> findAllStudentsWithCriteriaQuery() {
CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<Student> cq = cb.createQuery(Student.class);
Root<Student> rootEntry = cq.from(Student.class);
CriteriaQuery<Student> all = cq.select(rootEntry);

TypedQuery<Student> allQuery = session.createQuery(all);
return allQuery.getResultList();
}

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

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

Запросы JPQL и запросы на основе критериев JPA не только похожи, но и имеют одинаковую производительность.

4. Вывод

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

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