Utilisation simple des transactions Java
Les affaires de Java seront interrogées lors de certaines interviews.
Au cours de l'entretien, la première chose à laquelle nous devons répondre est: les transactions peuvent assurer l'intégrité et la cohérence des données.
Si les compétences sont plus profondes: parlez simplement de certains principes (définissez pas de soumettre des tâches avant le début de la tâche et soumettez des tâches une fois toutes les tâches terminées.
Si la tâche est déconnectée au milieu, Rollback sera effectué et la tâche précédente sera annulée), et un exemple simple sera donné (tel que le problème de l'épargne et du retrait de l'argent.
Par exemple: la banque transfère de l'argent entre deux comptes, transfère du compte A au compte B pour 1 000 yuans. Le système réduit d'abord le compte A de 1 000 yuans, puis ajoute 1 000 yuans au compte B. Si toutes les exécutions réussissent, la base de données est en cohérence; Si seule la modification du montant du compte A est terminée sans augmenter le montant du compte B, la base de données est dans un état incohérent et l'opération précédente doit être annulée. )
Cet article traite brièvement des transactions Java. Lorsque nous posons des questions sur les transactions Java, nous devons savoir que cela est lié aux bases de données.
un. Regardons d'abord un code simple
Utilisez JDBC pour effectuer le traitement des transactions
public int Delete (int sid) {// classe qui implémente la connexion de la base de données DatabaseConnection dbc = new databaseConnection (); // Obtenez la connexion de l'objet de connexion con = dbc.GetConnection (); essayez {con.setautoCommit (false); // modifie la méthode de validation par défaut des transactions jdbc dbc.ExECuteUpdate ("supprimer de xiao où id =" + sid); dbc.ExecteUpDate ("Supprimer de xiao_content où id =" + sid); dbc.ExecteUpDate ("Supprimer de xiao_affix où bylawid =" + sid); con.Commit (); // commit la transaction JDBC CON.SetAutoCommit (true); // Restaurez la méthode de validation par défaut de la transaction JDBC dbc.close (); retour 1; } catch (exception exc) {con.rollback (); // rolle back jdbc transaction dbc.close (); retour -1; }} Le code ci-dessus est une exécution simple d'une transaction Java.
Les trois fois des opérations de suppression ci-dessus sont effectuées. Tant que l'on échoue, la tâche sera annulée, ce qui équivaut à un succès ensemble ou rien n'est fait.
S'il n'y a pas de gestion des transactions, l'exécution précédente sera immédiatement mise à jour dans la base de données.
Sortez les tâches suivantes partout où l'exécution échoue et la cohérence des données ne peut pas être garantie.
deux. Le concept de base des transactions Java
Atomicité: une transaction est une opération complète. Les opérations de la transaction sont inséparables (atomiques);
Soit les exécuter, soit aucun d'entre eux
Cohérence: une fois une transaction se terminer, les données doivent être dans un état cohérent.
Isolement: Toutes les transactions simultanées qui modifient les données sont isolées les unes des autres, ce qui signifie que la transaction doit être indépendante.
Il ne devrait pas dépendre ou affecter d'autres transactions de quelque manière que ce soit (durabilité): une fois la transaction terminée, ses modifications à la base de données sont maintenues en permanence et le journal des transactions peut maintenir la permanence de la transaction.
Java Transaction Process Description: Si vous effectuez plusieurs opérations dans la base de données, chaque exécution ou étape est une transaction.
Si l'opération de base de données n'est pas exécutée à une certaine étape ou une exception se produit, ce qui entraîne la défaillance de la transaction, donc certaines transactions sont exécutées et que certaines ne sont pas exécutées.
Cela conduit à la retournement des transactions et annule les opérations précédentes ...
Dans une opération de base de données, une transaction fait référence à une unité de travail inséparable composée d'une ou plusieurs instructions SQL qui mettent à jour la base de données.
Ce n'est que lorsque toutes les opérations de la transaction sont terminées normalement que la transaction entière peut être soumise à la base de données. Si une opération n'est pas terminée,
L'ensemble de la transaction doit être révoqué.
Par exemple, dans les transactions de transfert bancaire, supposons que Zhang San transfère 1 000 yuans de son compte au compte de Li SI, les instructions SQL pertinentes sont les suivantes:
Mettre à jour le jeu de compte Money = monery-1000 où name = 'zhangsan'
Mettre à jour le jeu de compte Money = MONERY + 1000 WHERE NAME = 'LISI'
Ces deux instructions doivent être traitées en tant que transaction terminée. Cette transaction ne peut être soumise que lorsque les deux sont exécutés avec succès.
Si une phrase échoue, toute la transaction doit être révoquée.
Il existe 3 méthodes pour contrôler les transactions dans la classe de connexion:
(1) setAutoCommit (Boolean AutoCommit): Définissez l'opportunité de soumettre automatiquement les transactions;
(2) commit (); commettre(); commettre une transaction;
(3) rollback (); annuler la transaction;
Dans l'API JDBC, le cas par défaut consiste à engager automatiquement des transactions, c'est-à-dire que chaque mise à jour de la base de données représente une transaction.
Une fois l'opération réussie, le système appelle automatiquement Commit () à engager, sinon Rollback () sera appelé pour annuler la transaction.
Dans l'API JDBC, la soumission automatique des transactions peut être interdite en appelant SetAutoCommit (FALSE).
Ensuite, vous pouvez utiliser plusieurs instructions SQL qui mettent à jour la base de données en tant que transaction. Une fois toutes les opérations terminées, commit () est appelé pour faire la soumission globale.
Si l'une des opérations SQL échoue, la méthode commit () ne sera pas exécutée, mais la conception SQLEX correspondante sera générée.
À l'heure actuelle, vous pouvez prendre l'exception dans le bloc de code, appeler la méthode Rollback () pour annuler la transaction.
D'une manière générale, les développeurs spécialisés dans le développement de bases de données doivent avoir une compréhension approfondie des transactions.
Mais le programmeur moyen n'a pas besoin de passer beaucoup de temps à cet égard. Ayez simplement une compréhension de l'effet général.
Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!