Дапамажыце dev.by 🤍
Падтрымаць

Советы по 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, на которые стоит обратить внимание новичкам и профи
12 курсов по Java, на которые стоит обратить внимание новичкам и профи
12 курсов по Java, на которые стоит обратить внимание новичкам и профи
Java по-прежнему входит в список самых популярных языков программирования. Вместе с Digital Defund составили список курсов, которые подойдут как новичкам, так и людям с опытом программирования, и помогут освоить этот востребованный язык. 
Как оплачиваются самые популярные языки GitHub и какой прогноз
Как оплачиваются самые популярные языки GitHub и какой прогноз
Как оплачиваются самые популярные языки GitHub и какой прогноз
TIOBE: Java стремительно сдаёт позиции другим языкам
TIOBE: Java стремительно сдаёт позиции другим языкам
TIOBE: Java стремительно сдаёт позиции другим языкам
7 каментарыяў
Поговорили с разработчиками, которые бесплатно помогают джунам. 2 истории
Поговорили с разработчиками, которые бесплатно помогают джунам. 2 истории
Поговорили с разработчиками, которые бесплатно помогают джунам. 2 истории
9 каментарыяў

Хочаце паведаміць важную навіну? Пішыце ў Telegram-бот

Галоўныя падзеі і карысныя спасылкі ў нашым Telegram-канале

Абмеркаванне
Каментуйце без абмежаванняў

Рэлацыраваліся? Цяпер вы можаце каментаваць без верыфікацыі акаўнта.

Каментарыяў пакуль няма.