Комментарии 10
Почти ультимативный обзор Criteria API с продвинутыми возможностями Hibernate
Вы серьезно? Criteria API?,
чтобы потом тратить часы в попытках понять, что вы там пытались населектить?
заем вы учите джунов плохому, они же поверят :)
HQL/JPQL + слой репозиториев (Spring/Jakarta) по вкусу и никакого треша в коде
Criteria API нужен ТОЛЬКО для динамической генерации запросов, т.е. крайне редко, если у вас ее нет, а в обычном бизнес коде ее чаще всего нет, то нечего огород городить
Как раз в статье и написано, что самым ощутимым плюсом Criteria является возможность генерировать запросы. Для этого я в начале и включил раздел с небольшим сравнением разных способов работы с БД. Нигде в статье не заявляется, что это лучший способ работы. Это специфический инструмент. Когда возникнет необходимость динамической генерации, тогда хочешь или нет, но придётся с ним поработать.
У вас в примерах нет динамической генерации, вы завернули обычные запросы в Criteria API, поэтому незачет.
Динамическая - это когда вы заранее не знаете, какой запрос нужно выполнить, например, список полей, условий выборки и сортировки приходит с UI (CRM система со стандартными формами на разные сущности с возможностью гибкой настройки пользователем).
А у вас простая статика.
Действительно, возможно стоило бы добавить пример динамической генерации. Примеры здесь я приводил для демонстрации возможностей Criteria. Как сделать запрос динамически это уже вопрос программирования на Java. Ну будешь предикаты в where добавлять из списка, который сгенерирован в зависимости от входных параметров, мне кажется это уже не про какие-то возможности Criteria. Поэтому и не подумал добавить сюда такие примеры
Действительно, возможно стоило бы добавить пример динамической генерации.
Получается не ультимативный всё-таки гайд раз не хватает примеров :)
Конечно нет, поэтому и «почти ультимативный». В конце статьи я даже написал, что ещё стоило бы добавить до ультимативности) В том числе и интересные примеры, в числе которых будет и пример с динамической генерацией. Под это думал вторую статью отвести, но возможно и эту дополню. В запасе есть много ещё чего. Есть крутой пример с динамической сортировкой по нескольким столбцам методом плавающей границы. Думаю, куда бы запихать всё это добро
Действительно.. У нас в проекте были динамические фильтры, поэтому пришлось применить это.. Но пришлось писать свой кастомный BaseRepository основаннный на Specifications. Зато все другие методы всех доугих репозиториев получились весьма лаконичными. Да, это было сложно, но почему мы справились, а создатели этого нет?
Почти ультимативный гайд по Criteria API с продвинутыми возможностями Hibernate