Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Transactions | Travailler avec des Bases de Données
Backend Spring Boot
course content

Contenu du cours

Backend Spring Boot

Backend Spring Boot

1. Notions de Base du Développement Backend
2. Notions de Base de Spring Boot
3. API RESTful
4. Travailler avec des Bases de Données
5. Tester les Applications Backend

book
Transactions

Une transaction nous offre essentiellement un choix : soit toutes les opérations qu'elle contient sont réalisées avec succès, soit aucune d'elles n'est exécutée.

Imaginez une opération de transfert bancaire, où de l'argent est déplacé d'un compte à un autre. Ce processus implique deux étapes :

  1. Déduire de l'argent d'un compte ;
  2. Déposer de l'argent sur un autre compte.

Si la transaction échoue après avoir déduit de l'argent mais avant de l'avoir déposé, les fonds pourraient être "perdus". Une transaction garantit que les deux opérations sont soit entièrement complétées, soit entièrement annulées.

Notions de base de la gestion des transactions

L'annotation @Transactional : Elle est utilisée pour déclarer des méthodes ou des classes qui doivent être exécutées dans le contexte d'une transaction.

Lorsqu'une méthode avec cette annotation est appelée, Spring démarre une nouvelle transaction. Si la méthode se termine avec succès, la transaction est validée ; sinon, elle est annulée.

Fournissons un exemple basé sur le scénario réel mentionné précédemment.

java

BankService

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); } }

Lorsque la méthode transferMoney est marquée avec l'annotation @Transactional, cela signifie que tous les changements se produisant au sein de cette méthode seront exécutés dans une transaction unique.

Lorsque nous appelons fromAccount.withdraw(amount) suivi de toAccount.deposit(amount), ces deux actions doivent être complétées avec succès. Si, par exemple, une erreur survient lors de l'opération toAccount.deposit(amount), la transaction annulera automatiquement les changements effectués lors de l'étape fromAccount.withdraw(amount).

Cela assure que soit les deux opérations sont exécutées et l'argent est transféré, soit, en cas d'erreur, aucune opération n'est effectuée, prévenant toute perte de fonds. La transaction garantit que la base de données ne sera jamais laissée dans un état incohérent.

Application Pratique des Transactions

Résumé

Une transaction est un ensemble d'opérations de base de données traitées comme une unité unique, garantissant que toutes les opérations réussissent ensemble ou sont complètement annulées en cas d'échec. Vous pouvez en apprendre plus sur les transactions ici.

Qu'est-ce qu'une `transaction` dans le contexte d'une base de données ?

Qu'est-ce qu'une transaction dans le contexte d'une base de données ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 6
We're sorry to hear that something went wrong. What happened?
some-alt