Sobes.tech
Junior — Middle

Spiega il principio di funzionamento dell'annotazione @Transactional e il suo ruolo nella gestione delle transazioni nel database.

sobes.tech AI

Risposta dell'AI

L'annotazione @Transactional in Java (solitamente nel framework Spring) viene utilizzata per gestire le transazioni del database a livello di metodi o classi.

Principio di funzionamento:

  • Quando si chiama un metodo con @Transactional, viene creata una nuova transazione o si utilizza una transazione esistente.
  • Tutte le operazioni sul database all'interno del metodo vengono eseguite nel contesto di questa transazione.
  • Se il metodo termina con successo, la transazione viene confermata (le modifiche vengono salvate).
  • Se si verifica un'eccezione (solitamente unchecked), la transazione viene annullata e tutte le modifiche vengono revertite.

Questo permette di garantire l'integrità dei dati e la coerenza dello stato del database, specialmente quando si eseguono più operazioni correlate.

Esempio:

@Service
public class UserService {

    @Transactional
    public void createUserAndProfile(User user, Profile profile) {
        userRepository.save(user);
        profileRepository.save(profile);
        // Se si verifica un'eccezione qui, entrambi i salvataggi saranno annullati
    }
}

In questo modo, @Transactional semplifica la gestione delle transazioni e aiuta a evitare errori legati all'esecuzione parziale delle operazioni.