Мне не нравится использовать сервисы только для того, чтобы обернуть поиски в базе данных, в итоге вы получаете всю бизнес-логику в своем контроллере. Я бы организовал свои сервисы так, чтобы по одному типу пользователей. Так что, если бы у меня были клиенты и люди, занимающиеся вводом данных, и администраторы, я бы создал службу customerService, dataEntryService и adminService. Каждый сервис будет раскрывать методы, которые нужны клиенту. В контроллере не должно быть никакой бизнес-логики, она строго связана с получением входных данных из URL-адреса, запроса и сеанса, вызовом метода для некоторой службы (передачей этих входных данных), затем принятием результата вызова службы и помещением этого страница может отображать его.