Maison Java javaDidacticiel Une introduction détaillée aux transactions de base Java

Une introduction détaillée aux transactions de base Java

Mar 16, 2017 am 10:22 AM

Cet article présente principalement des informations pertinentes sur l'introduction détaillée des transactions de base Java. Les amis qui en ont besoin peuvent se référer à

Explication détaillée des transactions Java

1 , Qu'est-ce qu'une transaction

Une transaction est une séquence d'opérations pour accéder à la base de données. Le système d'application de base de données complète l'accès à la base de données via des ensembles de transactions. L'exécution correcte d'une transaction provoque la transition de la base de données d'un

état à un autre.

Les transactions doivent être conformes aux principes ACID établis par l'ISO/IEC. ACID est l'abréviation d'atomicité, de cohérence, d'isolement et de durabilité. Les transactions doivent être conformes aux principes ACID établis par l'ISO/CEI. ACID est l'abréviation d'atomicité, de cohérence, d'isolation et de durabilité.

Atomique. C'est-à-dire l'indivisibilité, soit toutes les transactions sont exécutées, soit aucune n'est exécutée. Si toutes les sous-transactions de la transaction sont soumises avec succès, toutes les opérations de base de données sont soumises et l'état de la base de données est converti si une sous-transaction échoue, les opérations de base de données des autres sous-transactions sont annulées, c'est-à-dire que la base de données revient à l'état avant l'exécution de la transaction, aucune transition d'état ne se produira.

Cohérence ou cordabilité. L'exécution d'une transaction convertit la base de données d'un état correct à un autre. Isolement. Avant que la transaction ne soit correctement validée, toute modification apportée aux données par la transaction ne peut être transmise à aucune autre transaction, c'est-à-dire que jusqu'à ce que la transaction soit correctement validée, ses résultats possibles ne doivent être affichés dans aucune autre transaction.

Persistance. Une fois qu'une transaction est soumise correctement, ses résultats seront enregistrés de manière permanente dans la base de données. Même s'il y a d'autres échecs après la soumission de la transaction, les résultats du traitement de la transaction seront enregistrés.

En exécutant une application ou un script SQL intégré, la transaction démarrera automatiquement la première fois que l'instruction SQL exécutable sera exécutée (après l'établissement de la connexion à la base de données ou après la fin de la transaction existante). Après le démarrage d'une transaction, celle-ci doit être explicitement terminée par l'utilisateur ou l'application qui a démarré la transaction, à moins qu'un processus appelé validation automatique ne soit utilisé (auquel cas chaque instruction SQL émise est visualisée. L'exécution d'une seule transaction est implicitement validée dès qu'elle est exécuté).

Dans la plupart des cas, une transaction est terminée en exécutant une instruction COMMIT ou ROLLBACK. Lorsque l'instruction COMMIT est exécutée, toutes les modifications apportées à la base de données depuis le démarrage de la transaction deviennent permanentes, c'est-à-dire qu'elles sont écrites sur le disque. Lorsque l'instruction ROLLBACK est exécutée, toutes les modifications apportées à la base de données depuis le début de la transaction sont annulées et la base de données revient à l'état dans lequel elle se trouvait avant le début de la transaction. Dans les deux cas, la base de données est garantie de revenir à un état cohérent une fois la transaction terminée.

Il est important de noter que bien que les transactions assurent la cohérence générale de la base de données en garantissant que les modifications apportées aux données ne deviennent permanentes qu'une fois la transaction validée avec succès, cela nécessite toujours que l'utilisateur ou l'application garantisse la séquence des opérations SQL effectuées dans chaque transaction aboutit toujours à une base de données cohérente.

2. Le système de base de données prend en charge deux modes de transaction  :

Mode de validation automatique : chaque instruction SQL est une transaction indépendante après la base de données. Le système exécute une instruction SQL, il soumettra automatiquement la transaction.

Mode de validation manuelle : la limite de début et la limite de fin de la transaction doivent être spécifiées explicitement par le programme client de la base de données.

Remarque : Les tables de base de données dans

MySQL sont divisées en 3 types : INNODB, BDB et MyISAM, parmi lesquels MyISAM ne prend pas en charge les transactions de base de données. L'instruction create table dans MySQL est par défaut le type MyISAM.

3. Pour plusieurs transactions exécutées en même temps, lorsque ces transactions accèdent aux mêmes données dans la base de données, si le mécanisme d'isolation nécessaire n'est pas adopté, divers problèmes de concurrence se produiront. Ces problèmes de concurrence peuvent être résumés comme suit. suit Plusieurs catégories :

  • Le premier type de perte

    Mise à jour : Lorsqu'une transaction est révoquée, les données mises à jour soumises par d'autres transactions seront écrasées.

  • Lecture sale : une transaction lit les données mises à jour soumises par une autre transaction.

  • Lecture factice : une transaction lit les données nouvellement insérées qui ont été soumises par une autre transaction.

  • Lecture non répétable : une transaction lit les données mises à jour qui ont été soumises par une autre transaction.

  • Le deuxième type de mise à jour perdue : il s'agit d'un cas particulier de lecture non répétable, où une transaction écrase les données mises à jour soumises par une autre transaction.


4. Niveau d'isolement

Lorsque le système de base de données adopte le niveau d'isolement read Commited, cela conduira au deuxième type de lecture non répétable Le problème de concurrence des mises à jour perdues peut être évité en utilisant le verrouillage pessimiste ou le verrouillage optimiste dans l'application. Du point de vue des applications, les verrous peuvent être divisés dans les catégories suivantes :

  1. Sérialisable : Une transaction ne peut pas voir les mises à jour apportées à la base de données par d'autres transactions lors de l'exécution.

  2. Lecture répétable : lors de l'exécution d'une transaction, vous pouvez voir les enregistrements nouvellement insérés qui ont été soumis par d'autres transactions, mais vous ne pouvez pas voir les modifications apportées aux enregistrements existants par d'autres transactions renouvelées.

  3. Lecture validée (lire les données validées) : lors de l'exécution d'une transaction, vous pouvez voir les enregistrements nouvellement insérés qui ont été validés par d'autres transactions, et vous pouvez également voir les paires qui ont été validés par d'autres transactions. Mise à jour des enregistrements existants

  4. Lire non validé (lire les données non validées) : Lors de l'exécution, une transaction peut copier les enregistrements nouvellement insérés qui n'ont pas été validés par d'autres transactions, et peut voir d'autres transactions. Il n'y a aucune mise à jour validée pour les enregistrements existants.

Plus le niveau d'isolement est élevé, plus les données peuvent être garanties complètes et cohérentes, mais plus l'impact sur les performances de concurrence est grand. Pour la plupart des applications, vous pouvez donner la priorité à la définition du niveau d'isolement du système de base de données sur Read Commited, ce qui peut éviter les lectures sales et offrir de meilleures performances de concurrence. Bien que cela entraîne des problèmes de concurrence tels que des lectures non répétables, des lectures virtuelles et des mises à jour perdues de deuxième type, dans des situations individuelles où de tels problèmes peuvent survenir, ils peuvent être contrôlés par l'application à l'aide de verrous pessimistes ou de verrous optimistes.

Lorsque le système de base de données utilise le niveau d'isolement de lecture validée, cela entraînera des lectures non répétables et le deuxième type de problèmes de concurrence de mise à jour perdue. Vous pouvez utiliser des verrous pessimistes ou des verrous optimistes dans l'application pour éviter de tels problèmes. . Du point de vue de l'application, les verrous peuvent être divisés dans les catégories suivantes :

 A. Verrouillage pessimiste : fait référence au verrouillage des ressources de données affichées dans l'application. Bien qu'il évite les problèmes de concurrence tels que la perte de mises à jour et les lectures non répétables, il affecte les performances de concurrence et doit être utilisé avec prudence.

 B. Verrouillage optimiste : Le verrouillage optimiste suppose que lorsque la transaction actuelle exploite la ressource de données, aucune autre transaction n'accédera à la ressource de données en même temps, donc il s'appuie entièrement sur l'isolation des niveaux de base de données pour gérer automatiquement les verrous. Les applications utilisent le contrôle de version pour éviter d'éventuels problèmes de concurrence.

5. Il existe deux manières de mettre en œuvre le verrouillage pessimiste.

A. Afficher dans le programme d'application et spécifier l'utilisation exclusive du système de base de données pour verrouiller les ressources de données. Instruction SQL : sélectionnez... pourupdate, utilisez get en veille prolongée, lors du chargement, comme session.get(Account .class,new Long(1),LockMode,UPGRADE)

 B. Ajoutez un champ LOCK indiquant l'état de l'enregistrement dans la table de la base de données. Lorsqu'il prend la valeur "Y", Indique que l'enregistrement a été verrouillé par une transaction. S'il vaut "N", cela indique que l'enregistrement est inactif et que la transaction peut y accéder. Ceci peut être réalisé en ajoutant un champ de balise de verrouillage.

Utilisez le contrôle de version Hibernate pour implémenter le verrouillage optimiste

Le verrouillage optimiste est un mécanisme fourni par le programme. Ce mécanisme peut non seulement garantir que plusieurs transactions accèdent aux données simultanément, mais également empêcher la disparition de la deuxième classe. problème de mise à jour.

Dans l'application, vous pouvez utiliser la fonction de contrôle de version fournie par Hibernate pour afficher le verrouillage optimiste. L'élément et <timestamp> fonction de contrôle de version, il est généralement recommandé d'utiliser

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Créer l'avenir : programmation Java pour les débutants absolus Créer l'avenir : programmation Java pour les débutants absolus Oct 13, 2024 pm 01:32 PM

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

See all articles