Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Transazioni | Lavorare Con I Database
Spring Boot Backend

bookTransazioni

Una transazione fondamentalmente ci offre una scelta: o tutte le operazioni al suo interno vengono completate con successo, oppure nessuna di esse viene eseguita.

Si immagini un'operazione di trasferimento bancario, in cui il denaro viene spostato da un conto a un altro. Questo processo coinvolge due passaggi:

  1. Detrazione di denaro da un conto;
  2. Deposito di denaro su un altro conto.

Se la transazione fallisce dopo la detrazione del denaro ma prima del deposito, i fondi potrebbero andare "persi". Una transazione garantisce che entrambe le operazioni siano completamente eseguite o completamente annullate.

Fondamenti della gestione delle transazioni

L'annotazione @Transactional: viene utilizzata per dichiarare metodi o classi che devono essere eseguiti all'interno del contesto di una transazione.

Quando viene chiamato un metodo con questa annotazione, Spring avvia una nuova transazione. Se il metodo termina correttamente, la transazione viene confermata; altrimenti, viene annullata.

Si fornisce un esempio basato sullo scenario reale menzionato in precedenza.

BankService.java

BankService.java

copy
1234567891011121314151617
@Service public class BankService { private AccountRepository accountRepository; @Transactional public void transferMoney(Long fromAccountId, Long toAccountId, double amount) { Account fromAccount = accountRepository.findById(fromAccountId); Account toAccount = accountRepository.findById(toAccountId); fromAccount.withdraw(amount); toAccount.deposit(amount); accountRepository.save(fromAccount); accountRepository.save(toAccount); } }

Quando il metodo transferMoney è contrassegnato con l'annotazione @Transactional, significa che tutte le modifiche effettuate all'interno di questo metodo saranno eseguite all'interno di una singola transazione.

Quando si richiama fromAccount.withdraw(amount) seguito da toAccount.deposit(amount), entrambe queste azioni devono essere completate con successo. Se, ad esempio, si verifica un errore durante l'operazione toAccount.deposit(amount), la transazione annullerà automaticamente le modifiche apportate durante la fase fromAccount.withdraw(amount).

Questo garantisce che entrambe le operazioni vengano eseguite e il denaro venga trasferito, oppure, in caso di errore, nessuna delle operazioni venga effettuata, evitando qualsiasi perdita di fondi. La transazione garantisce che il database non venga mai lasciato in uno stato inconsistente.

Applicazione pratica delle transazioni

Riepilogo

Una transazione è un insieme di operazioni sul database trattate come un'unità singola, garantendo che tutte le operazioni abbiano successo insieme oppure vengano completamente annullate in caso di errore. Puoi approfondire le transazioni qui.

question mark

Che cos'è una transaction nel contesto di un database?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 6

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 3.45

bookTransazioni

Scorri per mostrare il menu

Una transazione fondamentalmente ci offre una scelta: o tutte le operazioni al suo interno vengono completate con successo, oppure nessuna di esse viene eseguita.

Si immagini un'operazione di trasferimento bancario, in cui il denaro viene spostato da un conto a un altro. Questo processo coinvolge due passaggi:

  1. Detrazione di denaro da un conto;
  2. Deposito di denaro su un altro conto.

Se la transazione fallisce dopo la detrazione del denaro ma prima del deposito, i fondi potrebbero andare "persi". Una transazione garantisce che entrambe le operazioni siano completamente eseguite o completamente annullate.

Fondamenti della gestione delle transazioni

L'annotazione @Transactional: viene utilizzata per dichiarare metodi o classi che devono essere eseguiti all'interno del contesto di una transazione.

Quando viene chiamato un metodo con questa annotazione, Spring avvia una nuova transazione. Se il metodo termina correttamente, la transazione viene confermata; altrimenti, viene annullata.

Si fornisce un esempio basato sullo scenario reale menzionato in precedenza.

BankService.java

BankService.java

copy
1234567891011121314151617
@Service public class BankService { private AccountRepository accountRepository; @Transactional public void transferMoney(Long fromAccountId, Long toAccountId, double amount) { Account fromAccount = accountRepository.findById(fromAccountId); Account toAccount = accountRepository.findById(toAccountId); fromAccount.withdraw(amount); toAccount.deposit(amount); accountRepository.save(fromAccount); accountRepository.save(toAccount); } }

Quando il metodo transferMoney è contrassegnato con l'annotazione @Transactional, significa che tutte le modifiche effettuate all'interno di questo metodo saranno eseguite all'interno di una singola transazione.

Quando si richiama fromAccount.withdraw(amount) seguito da toAccount.deposit(amount), entrambe queste azioni devono essere completate con successo. Se, ad esempio, si verifica un errore durante l'operazione toAccount.deposit(amount), la transazione annullerà automaticamente le modifiche apportate durante la fase fromAccount.withdraw(amount).

Questo garantisce che entrambe le operazioni vengano eseguite e il denaro venga trasferito, oppure, in caso di errore, nessuna delle operazioni venga effettuata, evitando qualsiasi perdita di fondi. La transazione garantisce che il database non venga mai lasciato in uno stato inconsistente.

Applicazione pratica delle transazioni

Riepilogo

Una transazione è un insieme di operazioni sul database trattate come un'unità singola, garantendo che tutte le operazioni abbiano successo insieme oppure vengano completamente annullate in caso di errore. Puoi approfondire le transazioni qui.

question mark

Che cos'è una transaction nel contesto di un database?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 6
some-alt