R z CRUD, kiedy obsługiwać Optional

R z CRUD, kiedy obsługiwać Optional
danek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 797
0

Hej
Mam takie repository

Kopiuj

@Repository
public interface LeagueRepository extends CrudRepository<LeagueEntity,Long>{

    Optional<LeagueEntity> findOne(long id);

}

Później w servisie jest zamieniana na Optionala DTO i ten optional idzie do endpointa (po drodze przez warstwę aplikacji, czyli takiej jakby fasady nad całą aplikacją) i wysyłany w świat. Tylko obecnie w przypadku braku danej encji zostanie zwrócony pusty DTO zamiast np 404. Pytanie w którym momencie powinno się sprawdzać czy w Optionalu coś jest?
a) w servisie podczas mapowania na DTO i wywalać jakiś ResourceNotFoundException z @ResponseStatus(value = HttpStatus.NOT_FOUND)?
b)w endpoincie przy dodawaniu linków do HATEOAS?
c)coś innego?

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

No jeśli nie ma nic w Optionalu a chcesz zrobić geta to powinieneś rzucić wyjątek tłumaczony na HTTP 404

artur52
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 223
2

Wywołanie repository w serwisie

Kopiuj
findOne(id).orElseThrow(ResourceNotFoundException ::new)

i łapiesz w global controller advice tłumacząc na co chcesz.

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.