tags |
---|
ORM |
API критериев (Criteria API) - это программный интерфейс, предоставляемый Java Persistence API (JPA) и Hibernate, для создания динамических запросов к базе данных без явного написания SQL-запросов. Он позволяет строить запросы с использованием объектно-ориентированной модели, что делает код более читаемым, поддерживаемым и безопасным.
Criteria API предоставляет возможность создавать запросы в виде цепочки вызовов методов, которые моделируют различные компоненты запроса, такие как условия (фильтры), сортировка, объединение таблиц, выборка конкретных полей и другие операции.
[!success]+ Основные цели Criteria API:
- Гибкость и динамичность: Criteria API позволяет строить запросы динамически в зависимости от условий и требований приложения. Вы можете добавлять и удалять условия, комбинировать их с использованием логических операций и создавать сложные запросы.
- Безопасность типов: Criteria API работает с типами данных на уровне компиляции, что позволяет избежать ошибок связанных с опечатками и неправильными типами данных в запросах.
- Абстракция от конкретной базы данных: Criteria API абстрагирует различные диалекты SQL и специфичные для базы данных детали, позволяя писать переносимый код, который будет работать с разными СУБД.
- Улучшенная поддержка инструментов разработки: Поскольку запросы создаются в виде объектов, Criteria API обеспечивает лучшую поддержку инструментов разработки, таких как IDE, которые могут предоставлять автодополнение кода, проверку типов и другие функции.
Пример использования Criteria API:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Product> query = cb.createQuery(Product.class);
Root<Product> root = query.from(Product.class);
query.select(root)
.where(cb.equal(root.get("category"), "Electronics"))
.orderBy(cb.asc(root.get("name")));
List<Product> products = entityManager.createQuery(query).getResultList();
В этом примере используется Criteria API для создания запроса на выборку продуктов из базы данных, где категория равна "Electronics". Результаты сортируются по имени продукта в алфавитном порядке. Затем запрос выполняется с помощью EntityManager, и результаты сохраняются в список products
.