Spoko sprawa z code review. Nie patrzę w ogóle na frontend bo się po prostu na tym nie znam, jeśli zaś chodzi o backend:
1) Pakietyzacja, nie jest najlepszym pomysłem robić pakietu np. Animal, i trzymać tam wszystko co jest z tym związane, w tym pakiecie masz taki miszmasz, masz encje, rest controller dao i exception.
Dużo lepszym pomysłem jest mieć oddzielne pakiety pakiety entity, controllers, repository (czym tam dao jak wolisz), exception itd. gdzie w pakiecie entity będziesz trzymać wszystkie encje, w pakiecie controllers będziesz trzymać kontrolerty itd itp. pakiety prezentują w ten sposób logiczny podział.
2) AnimalController, po pierwsze, nie musisz zwracać ResposneEntity, jest to zbędne np @PostMapping domyślnie zwraca HttpStatus.Ok czyli 200, dodatkowo post powinien zwrócić to co postował jeśli robi save to zwraca to coś z ID w twoim przypadku było by coś takiego
@PostMapping("/animal")
public Animal addAnimal(@RequestHeader(value = "x-auth", required = false) String jwt, @RequestBody Animal animal) {
workerService.checkIfWorkerIsValidByJwt(jwt);
return shelter.addAnimal(animal);
}
Zauważ że metoda addAnimal powinna zwrócić animal, twoje dao podczas metody .save zwraca animal i powinnieneś je odesłać na front (animal będzie miec ustawione ID).
Dodatkowy problem jest taki że zwracasz tutaj encje na front, co nie powinno mieć miejsca, jest wzorzec DTO (data trasfer object) który powinieneś zwrócić na front, i tak samo przyjąć w rest controllerze i dokonać konwersji z DTO na Encje.
Robi się to dlatego żeby przez przypadek nie ustawić czegoś na encji zarządzanej przez hibernate, np. robisz set na jakimś polu na encji która jest zarządzana przez hibernate i to automatycznie zostanie zapisane do bazy danych, nawet nie trzeba robić żadnego save przez dao. No i jest lipa w takim przypadku
3) ControllerAdvice to nie aspekt :) ale to się tyczy punktu 1 jako pakietyzacji
Przepraszam ale nie dam rady w tym momencie zrobić pełnego review. Ogólnie baaaaaardzo duży plus dla Ciebie że w ogóle prosisz o review! Nie jest źle! Jest trochę do poprawy ale masz w tym momencie bardzo dobry punkt startowy żeby zrobić coś fajnego, zajrzę jeszcze koło 20 dziś to podeślę jeszcze kilka tematów