Sobes.tech
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.