Zrobiłeś architekturę (chyba) warstwową, która moim zdaniem praktycznie zawsze jest błędem sama w sobie. Aczkolwiek jest w miarę przystępna do nauki i widziałem komercyjny kod tak napisany. Architektura warstwowa ma generalnie taką zasadę: wyższa warstwa zawsze wywołuje niższą. Warstwy nie wywołują wyższych i równorzędnych warstw.
Dlatego Kontroler -> Serwis -> Repo
jest poprawne, a Kontroler -> Serwis -> Serwis -> Repo
już niekoniecznie, bo dwie równorzędne warstwy się komunikują. W skrajnych przypadkach generuje to jakieś absurdalnie duże łańcuchy wywołań Kontroler -> Serwis -> Serwis -> ... -> Serwis -> Serwis -> Repo
. Widziałem taki kod, nie polecam.
Wychodzę z założenia, że wszystkie operacje związane z operowaniem na RentalRepository powinny być realizowane w serwisie RentalServiceImpl
Przy architekturze heksagonalnej (zakładając że RentalServiceImpl jest wejściem do modułu aplikacji) tak. W architekturze warstwowej nie.