Ein kleiner Hinweis, bzw. eine Frage ob das so gut ist.
Die save()
-Methode in UserServiceImpl hat den Rückgabetyp void. Ist also schonmal suspekt für einen Funktional-Denkenden Programmierer.
Das ganze ist ein Delegate (eine Weiterleitung) zur UserRepository.save()
-Methode, welche von org.springframework.data.jpa.repository.JpaRepository.save()
, bzw. CrudRepository
, abgeleitet ist und einen Rückgabetyp User hat.
Und dort findet sich folgendes JavaDoc:
Saves a given entity. Use the returned instance for further operations as the save operation might have changed the entity instance completely.
Momentan findet sich noch nicht soviel Anwendungscode, bzw. die save()
-Methode wird außerhalb einer init()
-Methode noch nicht so oft aufgerufen.
Aber ich kann mir vorstellen das es zu unerwarteten Effekten kommen kann, wenn man irgendwann mal sowas ähnliches aufruft:
User user = createUserFromForm();
userService.save(user);
redirectTo("users/"+user.getId()); //=> users/null
// good
User user = createUserFromForm();
User savedUser = userService.save(user);
redirectTo("users/"+savedUser.getId()); //=> users/12345```
Kann natürlich auch nur ein absolut hypothetisches Problem sein, dass so nie vorkommen wird oder bei Bedarf behoben werden kann.
Und falls dies doch in Betracht käme geändert zu werden, dann könnte auch ein Blick auf `RoleServiceImpl.addRole()`, sowie `CategoryServiceImpl.createNewCategory()` nicht schaden.
Wie gesagt, rein hypothetisch.
`assert user == userRepository.save(user)` kann, muss aber laut JavaDoc nicht funktionieren.