Optional, stream czy error handling w dao

0

Witam,

otóż mam pytanie dotyczące takiej sytuacji: mam załóżmy funkcję w DAO: findByCity(String city) obiektu Address, który jest zawarty w obiekcie User, teraz chcę wyszukiwać userów po city np... No i co teraz? Co powinno wracać findByCity(String city)? Powinienem zwrócić List<Optional<User>>? Streama? Bo tych userów może być 0, 1, a może i tysiące.. Jak to najlepiej obsłużyć?

Z góry dziękuję.

2

Dlaczego nie po prostu List? (List<User>)

0

A czemu nie List<User>? Jeżeli nie ma użytkowników, to pusta lista. Czy potrzebujesz wiedzieć, że jakichś użytkowników nie ma?

0
vizzini napisał(a):

Witam,

otóż mam pytanie dotyczące takiej sytuacji: mam załóżmy funkcję w DAO: findByCity(String city) obiektu Address, który jest zawarty w obiekcie User, teraz chcę wyszukiwać userów po city np... No i co teraz? Co powinno wracać findByCity(String city)? Powinienem zwrócić List<Optional<User>>? Streama? Bo tych userów może być 0, 1, a może i tysiące.. Jak to najlepiej obsłużyć?

Z góry dziękuję.

Możesz zwrócić List<User>,
natomiast jeśli dostajesz jakiś zbiorczy komunikat o błędzie, możesz zwrócić Either<Error, List<User>>, natomiast jeśli dostajesz jednostkowo komunikaty o błędach, możesz zwrócić List<Either<Error, User>>

Zwracanie List<Optional<User>> w sumie nie ma sensu, bo co to daje?

EDIT:
Z odpowiedziami robi się tu taki sam wyścig jak na Stack Overflow... =D

0

Rozumiem, czyli po prostu zwracać listę userów. W sumie to logiczne, przecież empty list nie dam nam null'a.

e: właśnie ten błąd też mnie zastanawiał, jak to do tego dodać: dzięki!

1

@vizzini: no a ja powiem inaczej niż poprzednicy. Zwróciłbym Traversable

1 użytkowników online, w tym zalogowanych: 0, gości: 1