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

bookTransactions

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

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

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

Si la transaction échoue après le débit mais avant le dépôt, les fonds pourraient être "perdus". Une transaction garantit que les deux opérations sont soit entièrement effectuées, soit entièrement annulées.

Principes de base de la gestion des transactions

L’annotation @Transactional : Utilisée pour déclarer des méthodes ou des classes devant être exécutées dans le contexte d’une transaction.

Lorsqu’une méthode annotée ainsi est appelée, Spring démarre une nouvelle transaction. Si la méthode s’achève avec succès, la transaction est validée ; sinon, elle est annulée.

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

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

Lorsque la méthode transferMoney est annotée avec l’annotation @Transactional, cela signifie que toutes les modifications effectuées dans cette méthode seront exécutées dans le cadre d’une transaction unique.

Lorsque l’on appelle fromAccount.withdraw(amount) suivi de toAccount.deposit(amount), ces deux actions doivent être menées à bien. Si, par exemple, une erreur survient lors de l’opération toAccount.deposit(amount), la transaction va automatiquement annuler les modifications réalisées lors de l’étape fromAccount.withdraw(amount).

Cela garantit que les deux opérations sont exécutées et que l’argent est transféré, ou, en cas d’erreur, aucune opération n’est réalisée, empêchant 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 sur la base de données considérées comme une unité unique, garantissant que toutes les opérations réussissent ensemble ou sont totalement annulées en cas d’échec. Vous pouvez en apprendre davantage sur les transactions ici.

question mark

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

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 6

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

What are the main benefits of using transactions in database operations?

Can you explain how the @Transactional annotation works in more detail?

Are there any common pitfalls or mistakes to avoid when working with transactions in Spring?

Awesome!

Completion rate improved to 3.45

bookTransactions

Glissez pour afficher le menu

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

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

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

Si la transaction échoue après le débit mais avant le dépôt, les fonds pourraient être "perdus". Une transaction garantit que les deux opérations sont soit entièrement effectuées, soit entièrement annulées.

Principes de base de la gestion des transactions

L’annotation @Transactional : Utilisée pour déclarer des méthodes ou des classes devant être exécutées dans le contexte d’une transaction.

Lorsqu’une méthode annotée ainsi est appelée, Spring démarre une nouvelle transaction. Si la méthode s’achève avec succès, la transaction est validée ; sinon, elle est annulée.

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

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

Lorsque la méthode transferMoney est annotée avec l’annotation @Transactional, cela signifie que toutes les modifications effectuées dans cette méthode seront exécutées dans le cadre d’une transaction unique.

Lorsque l’on appelle fromAccount.withdraw(amount) suivi de toAccount.deposit(amount), ces deux actions doivent être menées à bien. Si, par exemple, une erreur survient lors de l’opération toAccount.deposit(amount), la transaction va automatiquement annuler les modifications réalisées lors de l’étape fromAccount.withdraw(amount).

Cela garantit que les deux opérations sont exécutées et que l’argent est transféré, ou, en cas d’erreur, aucune opération n’est réalisée, empêchant 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 sur la base de données considérées comme une unité unique, garantissant que toutes les opérations réussissent ensemble ou sont totalement annulées en cas d’échec. Vous pouvez en apprendre davantage sur les transactions ici.

question mark

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

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 6
some-alt