Witam. W projekcie spring używam JpaRepository.
Mam metodę
@Transactional
public void updateUser(String username)
{
User user = userRepository.findByUsername(username);
if (user == null)
{
//zwracan blad
return
}
user.setActual(true);
userRepository.save(user);
}
Z tego co wyczytałem w interface JpaRepository wszystko jest @Transactional. W mojej metodzie jeżeli findByUsername nie znajdzie usera to i tak nie zmieni 'Actual'.
- Czy **musi **być ona @Transactional ?
- Czy **powinna **być ona @Transactional ?
- Czy to nie działa w ten sposób, że przy każdym @Transactional otwierane jest połączenie z bazą i w przypadku jak nie dam adnotacji @Transactional w tej metodzie to będzie to wyglądało w ten sposób? :
Otwiera połączenie z bazą -> findByUsername -> zwraca wynik -> zamyka -> otwiera połączenie z bazą -> save -> zamyka.
A dzięki @Transactional będzie: Otwiera połączenie z bazą -> findByUsername -> zwraca wynik -> save -> zamyka ?