Между слоями Repository и Controller у тебя д.б. слой Service.
Repository абстрагирует базу данных, т.е. занимается преобразованием объект_языка <--> запись_БД
. Благодаря этому, все остальные классы оперируют привычными им объектами, не заботясь об из происхождении: база данных, очередь, аппарат Луна-25 :)
Controller обслуживает HTTP-точки - принимает запросы и выдаёт готовые ответы.
А Service как раз занимается "бизнес-логикой", получая запросы от контроллера, запрашивая данные у репозитория, преобразуя их в готовый ответ и отправляя его обратно контроллеру. Сервис может подключить себе несколько репозиториев если ему требуются данные из нескольких источников, таблиц и пр.