Можно сделать интерфейс репозитория и его реализацию, а уже внутри обращаться к сайкловскому репозиторию. Например:
class OrderRepository implements OrderRepositoryInterface
{
//...
}
Такой репозиторий должен возвращать либо сущность, либо их коллекцию, либо их итератор, либо скаляр. В сервисы инжектится этот интерфейс. Все запросы к хранилищу идут через этот интерфейс. Он работает как апи, таким образом ты отвязываешься от конкретной реализации хранилища. То есть, у тебя сейчас заказы в основной rdbms, а ты решил вынести в нереляционную бд - нет проблем, сделал отдельную реализацию интерфейса и больше ничего менять не нужно. Хочешь вынести заказы во внешнюю систему - та же история, сделал отдельную реализацию интерфейса и заказы падают, скажем, сразу в 1с и оттуда же инфо по ним прилетает по api, опять же ничего больше менять не нужно.