Я не думаю, что контроллеры должны выполнять поиск в базе данных. Если вы откажетесь от своего веб-уровня, функциональность поиска исчезнет.
Я бы поставил их за слой интерфейсов репозитория. Вы можете проверить их без веб-уровня таким образом. Также может быть отдельный уровень обслуживания, который владеет единицами работы и транзакций. Поиски должны быть доступны только для чтения, поэтому они могут быть достаточно безопасными для прямого вызова с контроллеров.
Это рекомендуемая идиома Spring.