Junior — Middle
Cum funcționează adnotarea @Transactional și ce mecanisme utilizează pentru a asigura integritatea tranzacțională?
sobes.tech AI
Răspuns de la AI
A adnotarea @Transactional în Java (de obicei în cadrul Spring Framework) este utilizată pentru a marca metode sau clase care trebuie să fie executate în cadrul unei tranzacții.
Aceasta asigură:
- Începerea automată a tranzacției la intrarea în metodă.
- Confirmarea tranzacției la finalizarea cu succes.
- Reversarea tranzacției în cazul apariției unor excepții.
Mecanismele utilizate sunt:
- Proxy-uri (dinamice sau CGLIB) interceptează apelurile de metode.
- Managerul de tranzacții (
PlatformTransactionManager) gestionează ciclul de viață al tranzacției.
Exemplu:
@Service
public class UserService {
@Transactional
public void createUser(User user) {
userRepository.save(user);
// dacă aici se aruncă o RuntimeException, tranzacția va fi revocată
}
}
Astfel, @Transactional garantează integritatea datelor, gestionând automat tranzacțiile fără a fi nevoie să scrieți cod explicit pentru inițiere, confirmare sau revocare.