Support us

Советы по Java и не только: Criteria в Hibernate

Оставить комментарий
Советы по Java и не только: Criteria в Hibernate
Одним из важнейших свойств хорошей архитектуры является правильное разделение интересов или аспектов работы приложения. Архитектура становится фреймворком для разработки, если за счет разделения интересов мы достигли следующих свойств: 1.       Возможность повторного использования кода (библиотек) для решения однотипных задач 2.       Возможность реализации одной и той же функции различными техническими способами 3.       Возможность автоматизированного и автономного от всего приложения тестирования 4.       Упрощение разработки за счет сужения профессиональных знаний для решения задачи На помощь в достижении цели нам предоставлены множественные средства и паттерны разработки, от более непонятных, таких как IoC Container и AOP в различных реализациях, до более знакомых всем WEB фреймворков, реализующих MVC шаблон. В качестве простого но возможно полезного примера, я предлагаю следующую задачу: Приложение состоит из набора страниц для работы с таблицами данных(для разработчика понятней звучит «с коллекциями объектов - бинов»). Ниже приведен скриншот HTML отображения такой таблицы: Таблица с фильтром Стандартные функции: 1.       Переход по страницам и отображение только одной страницы информации (paginating) 2.       Сортировка по одной из колонок (по выбранному полю) 3.       Фильтр по одному из доступных значений одного из полей (несколько полей может участвовать одновременно) Логика формирования списка для отображения может быть различная. Например, могут учитывается права пользователей, либо переменные окружения. Но выше указанные функции всегда будут одинаковы для всех. Т.о. необходимо реализовать эти функции раз и на всегда и применять для всех страниц приложения, отображающих таблицы данных. Я приведу пример, как Criterion API от Hibernate нам помогает разделять аспекты при разработке WEB приложений. Criteria API позволяет формировать запросы к базе данных программным средствами. Вещь не до конца доработанная разработчиками Hibernate и имеющая много ограничений. К тому же я видел примеры кода, где программист пытался использовать Criterion API совсем не по назначению, а именно: либо просто перенося часть функций RDBMS на уровень Java приложения, либо создавая такую кашу кода и логики, что поддержка приложения становится хорошим тренажером для мозга :). Но в моем случае она оказалась довольно полезной. Класс Criteria - основной элемент в Criteria API. Он представляет собой запрос к базе на получение коллекции объектов бинов определенного типа. Работа с API начинается с создания объекта Criteria в виде: Criteria criteria = session.createCriteria(Class persistentClass); Далее criteria наполняется условиями любой сложности, от выборки по значению и сортировки, до организации вложенных запросов. А завершается работа с объектом запуском запроса и получением результата. Например: List result = criteria.list(); Т.о. при создании объекта Criteria мы можем задать все параметры сортировки и фильтрации, выбранные пользователем в интерфейсе. Далее пользователь фреймворка добавляет в запрос необходимую логику выборки. И в завершении идет стандартная имплементация выполнения запроса с функциями paginating-а. В результате, разработчик может сконцентрироваться на имплементации и, что очень важно и удобно, тестировании только специфических для данной таблицы условий выборки. Если же таковых нет, то функция является полностью реализованной и не требует дополнительного кодирования. В следующем посте, я могу привести пример имплементации данного решения, если конечно это кому-то интересно :)
Место солидарности беларусского ИТ-комьюнити

Далучайся!

Читайте также
12 онлайн-курсов по языку Java для новичков и профессионалов (август, 2023)
12 онлайн-курсов по языку Java для новичков и профессионалов (август, 2023)
12 онлайн-курсов по языку Java для новичков и профессионалов (август, 2023)
Java по-прежнему входит в список самых популярных языков программирования. Вместе с Digitaldefynd мы составили список курсов по Java, которые подойдут как новичкам, так и людям с опытом программирования, чтобы освоить этот востребованный язык.
Microsoft запустила обучающий сайт по Java
Microsoft запустила обучающий сайт по Java
Microsoft запустила обучающий сайт по Java
1 комментарий
Как оплачиваются самые популярные языки GitHub и какой прогноз
Как оплачиваются самые популярные языки GitHub и какой прогноз
Как оплачиваются самые популярные языки GitHub и какой прогноз
TIOBE: Java стремительно сдаёт позиции другим языкам
TIOBE: Java стремительно сдаёт позиции другим языкам
TIOBE: Java стремительно сдаёт позиции другим языкам
7 комментариев

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.