El tipo optional es un nuevo tipo que permite gestionar búsquedas en la base de datos que no devuelven un valor. Nos da más información que simplemente tener null.
https://www.baeldung.com/java-optional-return
¿Cómo gestionarlo, por ejemplo, en un controlador?
Opción a, convertir a nulo una búsqueda sin resultado
@GetMapping("/get")
public Category getCategory(@RequestParam(value = "id", defaultValue = "0") String id) {
try {
Category cat=categoryRepository.findById(Integer.parseInt(id)).orElse(null);
return cat;
} catch (Exception ex) {
return null;
}
}
Opción b, tratarlo como Optional
@GetMapping("/get")
public Optional<Category> getCategory(@RequestParam(value = "id", defaultValue = "0") String id) {
try {
Optional<Category> cat=categoryRepository.findById(Integer.parseInt(id));
return cat;
} catch (Exception ex) {
return Optional.empty();
}
}
En nuestro caso no hay problema porque el serializador de Spring lo trata bien.