Sobes.tech
Junior — Middle

Come funziona l'annotazione @Transactional e quali meccanismi utilizza per garantire l'integrità transazionale?

sobes.tech AI

Risposta dell'AI

L'annotazione @Transactional in Java (solitamente nel framework Spring) viene utilizzata per contrassegnare metodi o classi che devono essere eseguiti all'interno di una transazione.

Essa garantisce:

  • L'inizio automatico della transazione all'ingresso nel metodo.
  • Il commit della transazione al completamento con successo.
  • Il rollback della transazione in caso di eccezioni.

I meccanismi utilizzati sono:

  • I proxy (dinamici o CGLIB) intercettano le chiamate ai metodi.
  • Il gestore delle transazioni (PlatformTransactionManager) gestisce il ciclo di vita della transazione.

Esempio:

@Service
public class UserService {
    @Transactional
    public void createUser(User user) {
        userRepository.save(user);
        // se viene sollevata una RuntimeException qui, la transazione verrà annullata
    }
}

In questo modo, @Transactional garantisce l'integrità dei dati, gestendo automaticamente le transazioni senza la necessità di scrivere codice esplicito per avviare, confermare o annullare.