Использование Hibernate-поиска для сложных запросов вместо Criteria API - PullRequest
2 голосов
/ 23 ноября 2010

В приложении, использующем стек Wicket + Spring + JPA / Hibernate, у меня есть страница Входящие / Поиск, которая должна иметь довольно сложные возможности поиска, где записи, сохраненные в базе данных, фильтруются с использованием множества параметров фильтрации. До сих пор я использовал JPA Criteria API для построения запроса к базе данных, но он становится довольно грязным. Мне было интересно, подойдет ли для этого Hibernate-Search, хотя мне не нужны какие-либо возможности полнотекстового поиска, я просто чувствую (из того, что я читал об этом), что создание запроса может быть немного проще?

Ответы [ 2 ]

1 голос
/ 23 ноября 2010

Извините, но Hibernate Search основан на Lucence.Это не просто другой язык запросов.

Lucene не ищет сущности в вашей базе данных, он ищет атрибуты в индексе Lucene.Hibernate Search добавляет функциональность для соединения сущностей из вашей базы данных с индексом Lucene.

Hibernate Search и Lucene - инструмент создания, когда вам нужен расширенный полнотекстовый поиск.Но если вам это не нужно, это просто много нелепой работы (и проблем).

Так что, пока вы не используете Lucene, Hibernate Search не соответствует вашим потребностям.

0 голосов
/ 30 декабря 2010

Основным вариантом использования Hibernate Search является полнотекстовый поиск.Однако его также можно использовать для индексации / поиска простых атрибутов / критериев.Вопрос о том, проще ли синтаксис написания запросов, чем запрос критериев, зависит от вкуса.Если вы не используете возможности полнотекстового поиска, вам следует учитывать, что вы добавляете дополнительный шаг в свое приложение.Поисковый запрос будет выполняться по индексу Lucene, который будет возвращать идентификаторы сущностей (если не используется проекция).Соответствующие объекты будут затем извлечены из базы данных.С другой стороны, как только вы используете Hibernate Search, вы легко «улучшаете» свой поиск, добавляя некоторые полнотекстовые возможности поиска к некоторым из ваших критериев (если это возможно).думаю, что ключом является написание какой-то структуры, которая программно строит ваши запросы - запросы поиска или критерии.

...