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.