Optional, stream czy error handling w dao

Optional, stream czy error handling w dao
VI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
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ę.

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
2

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

Michał Sikora
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 834
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?

TY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 204
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

VI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
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!

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
1

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.