1. Qu'est-ce qu'une transaction Java ?
La croyance commune est que les transactions ne concernent que la base de données.
Les transactions doivent être conformes aux principes ACID établis par l'ISO/IEC. ACID est l'abréviation d'atomicité, de cohérence, d'isolation et de durabilité. L'atomicité d'une transaction signifie que tout échec lors de l'exécution de la transaction entraînera l'invalidité de toutes les modifications apportées par la transaction. La cohérence signifie que lorsqu'une transaction échoue, toutes les données affectées par la transaction doivent être restaurées dans leur état avant l'exécution de la transaction. L'isolement signifie que les modifications apportées aux données pendant l'exécution de la transaction ne sont pas visibles par les autres transactions avant que la transaction ne soit validée. La persistance signifie que le statut des données soumises doit être correct lorsque l'exécution de la transaction échoue.
L'interprétation populaire est qu'une transaction est un ensemble d'unités d'opération atomiques. Du point de vue d'une base de données, il s'agit d'un ensemble d'instructions SQL, soit toutes sont exécutées avec succès, si l'une des instructions comporte une erreur d'exécution pour une raison quelconque. les instructions précédemment exécutées seront annulées. La réponse la plus simple est : soit toutes les exécutions réussissent, soit elles sont annulées et non exécutées.
Puisque la notion de transaction vient de la base de données, qu’est-ce qu’une transaction Java ? Quel est le lien ?
En fait, si un système d'application Java souhaite faire fonctionner une base de données, celle-ci est implémentée via JDBC. L'ajout, la modification et la suppression sont tous implémentés indirectement via les méthodes correspondantes, et le contrôle des transactions est également transféré en conséquence au code du programme Java. Par conséquent, les transactions d'exploitation de base de données sont traditionnellement appelées transactions Java.
2. Pourquoi les transactions sont nécessaires
Les transactions sont proposées pour résoudre les opérations de sécurité des données. Le contrôle des transactions consiste en fait à contrôler l'accès sécurisé aux données. Voici un exemple simple : par exemple, dans le cadre d'une activité de virement bancaire, le compte A souhaite transférer 1 000 yuans de son propre compte vers le compte B. Le solde du compte A doit d'abord être soustrait de 1 000 yuans, puis le solde du compte B doit être augmenté de 1 000 yuans. S'il y a un problème dans le réseau intermédiaire, que le prélèvement de 1 000 yuans sur le compte de A est terminé et que le fonctionnement de B échoue en raison d'une interruption du réseau, alors l'ensemble de l'entreprise échoue et un contrôle doit être effectué pour exiger l'annulation du transfert. affaires du compte de A. Cela peut garantir l'exactitude de l'entreprise. Pour mener à bien cette opération, une transaction est nécessaire. La diminution des fonds du compte A et l'augmentation des fonds du compte B sont combinées en une seule transaction. Soit toutes les exécutions sont réussies, soit toutes les opérations sont annulées. préservant ainsi la sécurité des données.
3. Types de transactions Java
Il existe trois types de transactions Java : les transactions JDBC, les transactions JTA (Java Transaction API) et les transactions de conteneur.
1. Transactions JDBC
Les transactions JDBC sont contrôlées à l'aide d'objets Connection. L'interface de connexion JDBC (java.sql.Connection) propose deux modes de transaction : la soumission automatique et la soumission manuelle. java.sql.Connection fournit les méthodes suivantes pour contrôler les transactions :
public void setAutoCommit (booléen)
public booléen getAutoCommit()
validation publique nulle ()
restauration du vide public()
Lorsque vous utilisez la démarcation des transactions JDBC, vous pouvez combiner plusieurs instructions SQL en une seule transaction. L'un des inconvénients des transactions JDBC est que la portée de la transaction est limitée à une seule connexion à la base de données. Une transaction JDBC ne peut pas s'étendre sur plusieurs bases de données.