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 polamiusernameiregisterDate. - W
UserRepositorydopisuję 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
UserRepositoryi 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 ?