powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Нужна консультация
7 сообщений из 7, страница 1 из 1
Нужна консультация
    #38990956
AK1988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Нужен совет по реализации архитектуры расширенного поиска на сайте.
Пользователю предоставляется десяток параметров которые передаются в контроллер в виде мапы. Основываясь на выбранных пользователем параметрах нужно составить sql запрос, который вернет контроллеру список товаров. Так как параметры заранее неизвестны нужен конструктор для динамического создания sql запроса. Как бы Вы реализовывали такой конструктор?
...
Рейтинг: 0 / 0
Нужна консультация
    #38990972
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полнотекстовый поиск точно не то?
А так динамические запросы строятся легко и просто через
1) Hibernate/JPA Criteria API
2) QueryDSL, jOOQ
...
Рейтинг: 0 / 0
Нужна консультация
    #38990975
AK1988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, спасибо, но к сожалению не владею Hibernate, только jdbc.
...
Рейтинг: 0 / 0
Нужна консультация
    #38991048
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Нужна консультация
    #38991218
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK1988Blazkowicz, спасибо, но к сожалению не владею Hibernate, только jdbc.

Тогда в чем проблема?
Либо
1) Пишешь "универсальный" запрос, со всеми возможными параметрами
2) Формируешь запрос на лету в виде строки
В первом случае будет проблема оптимизации запроса
Во втором о безопасности от "SQL-иньекций" нужно будет думать самому.

А так, для динамических запросов действительно лучше использовать что-то вроде CriteriaAPI.
...
Рейтинг: 0 / 0
Нужна консультация
    #38991601
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CriteriaAPI -

Если таблица - одна - одно entity

то будет что-то подобное :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
        DetachedCriteria criteria = DetachedCriteria.forClass(Carts.class);
        if (name != null) {
            criteria.add(Restrictions.eq("name", name));
        }
        if (name1 != null) {
            criteria.add(Restrictions.eq("name", name1));
        }
        if (name2 != null) {
            criteria.add(Restrictions.eq("name2", name2));
        }
        if (from != null && to != null && to.after(from)) {
            criteria.add(Restrictions.between("creationDate", from, to));
        } else if (from != null && to == null) {
            criteria.add(Restrictions.ge("creationDate", from));
        } else if (from == null && to != null) {
            criteria.add(Restrictions.lt("creationDate", to));
        }
        criteria.addOrder(Order.desc("creationDate"));

        return ht.findByCriteria(criteria, 0, 100);



Если этого подхода не хватит ,то смотрите в сторону Apache Solr

Да порог вхождения большой , но зато один раз нужно написать и все :)
...
Рейтинг: 0 / 0
Нужна консультация
    #38991651
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1CriteriaAPI -

Если таблица - одна - одно entity


Для нескольких таблиц, будет точно так же.
Только их надо будет еще и JOIN'нить


Atum1Если этого подхода не хватит ,то смотрите в сторону Apache Solr

Да порог вхождения большой , но зато один раз нужно написать и все :)

Вообще вещь "перпендикулярная".
Ничего сложного нет.
"Из коробки" там почти все уже настроено.
Остается прописать откуда и что индексировать.

Но для реляционных данных смысла особого нет, т.к. в БД индексация по "точным" данным лучше.
А вот натравить на гигабайты документов милое дело.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Нужна консультация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]