Mam pytanie jak podejść z punktu widzenia czystego kodu do następującego zadania:
Mamy tabele załóżmy User z polami: id, name, username, password, registerDate
. Mam również dla niej typowe repository
:
public interface UserRepository extends CrudRepository<User, Long> {
}
Teraz zadanie polega na tym, że nowa usługa RESTowa musi mieć na wejściu name
użytkownika, a zwrócić obiekt z: username
i registerDate
. Jak to zrobić "najpoprawniej"? Zaimplementowałem następujące rozwiązanie:
- Tworzę osobną klasę
UserResponse
(pewnie nazwa do doprecyzowania, ale na tą chwilę przyjmijmy taką) z polamiusername
iregisterDate
. - W
UserRepository
dopisuję metodę:
public interface UserRepository extends CrudRepository<User, Long> {
@Query("tutaj odpowiednie zapytanie")
UserResponse findByName(String name);
}
- Tworzę nową klasę
UserResponseController
(jw, nazwa pewnie też do doprecyzowania). - Wstrzykuję w niej
UserRepository
i wywołuję metodęuserRepository.findByName("name")
.
Jest okej czy robię jakąś zakazaną rzecz dodając metodę o typie zwracanym UserResponse
do UserRepository
albo wstrzykując UserRepository
do UserResponseController
?