Inhaltsverzeichnis
Transaktion
Eigenschaften der Transaktion
Probleme, die entstehen, wenn die Merkmale nicht erfüllt sind
Lesen Sie das Problem
Schreibproblem
Leseproblem lösen
Transaktionsisolationsstufe festlegen
Transaktionsmanagement-API von Spring
Die sieben Transaktionsausbreitungsverhalten im Frühling
Verschachtelte Transaktion
dass sich die Operation in derselben Transaktion befindet
Stellen Sie sicher, dass sich die Vorgänge nicht im selben
Spring bietet zwei Transaktionsverwaltungsmethoden
Deklaratives Transaktionsmanagement
basiert auf XML
基于注解
基于xml的事务和基于注解的事务对比
Heim Java javaLernprogramm Relevante Einführung in das Spring-Transaktionsmanagement (mit Code)

Relevante Einführung in das Spring-Transaktionsmanagement (mit Code)

Oct 09, 2018 pm 02:34 PM
spring

Dieser Artikel bietet Ihnen eine relevante Einführung in das Spring-Transaktionsmanagement (mit Code). Freunde in Not können darauf verweisen.

Transaktion

Eine logische Reihe von Operationen, von denen jeder Teil entweder erfolgreich ist oder fehlschlägt

Eigenschaften der Transaktion

  • Konsistenz: Die Datenintegrität bleibt vor und nach der Transaktion konsistent

  • Atomizität: Transaktionen können nicht aufgeteilt werden, entweder sind alle erfolgreich oder alle scheitern

  • Isolation: Die Ausführung Anzahl der Transaktionen wird von anderen Transaktionen nicht beeinflusst und ist voneinander isoliert

  • Persistenz: Sobald die Transaktion abgeschlossen ist, wird sie in der Datenbank gespeichert und ist von den Systemauswirkungen nicht betroffen Absturz

Probleme, die entstehen, wenn die Merkmale nicht erfüllt sind

Probleme, die durch Isolation verursacht werden:

Lesen Sie das Problem

  • Dirty Read: Eine Transaktion liest Daten, die nicht von anderen Transaktionen festgeschrieben wurden.

  • Nicht wiederholbares Lesen: Eine Transaktion liest von anderen Transaktionen übermittelte Aktualisierungen Daten , was zu inkonsistenten Abfrageergebnissen führt

  • Phantomlesung: Eine Transaktion liest Einfügedaten aus einer anderen Transaktion , was zu inkonsistenten Abfrageergebnissen führt

Schreibproblem

  • Vorgang verloren

Leseproblem lösen

Transaktionsisolationsstufe festlegen

Relevante Einführung in das Spring-Transaktionsmanagement (mit Code)

   int ISOLATION_DEFAULT = -1;
    int ISOLATION_READ_UNCOMMITTED = 1;
    int ISOLATION_READ_COMMITTED = 2;
    int ISOLATION_REPEATABLE_READ = 4;
    int ISOLATION_SERIALIZABLE = 8;
Nach dem Login kopieren
  • ISOLATION_DEFAULT: Stellt den Spring-Standardwert dar und gibt an, dass die Standardisolationsstufe der zugrunde liegenden Datenbank verwendet wird. Beispielsweise verwendet MySQL ISOLATION_REPEATABLE_READ und ISOLATION_READ_COMMITTED

  • ISOLATION_READ_UNCOMMITTED: Nicht festgeschriebener Lesevorgang, kann das Leseproblem nicht lösen

  • ISOLATION_READ_COMMITTED: Festgeschriebener Lesevorgang, kann gelöst werden das schmutzige Problem Lesen, kann Phantom-Lesevorgänge und nicht wiederholbare Lesevorgänge nicht lösen

  • ISOLATION_REPEATABLE_READ: Wiederholte Lesevorgänge, kann schmutzige Lesevorgänge und nicht wiederholbare Lesevorgänge lösen

  • ISOLATION_SERIALIZABLE: Kann alle Leseprobleme lösen, die Effizienz ist nicht hoch

Transaktionsmanagement-API von Spring

PlatformTransactionManager: Plattformtransaktionsmanager
PlatformTransactionManager ist eine Schnittstelle, die wird von der untersten Ebene von Spring Object zum Verwalten von Transaktionen verwendet.
Relevante Einführung in das Spring-Transaktionsmanagement (mit Code)

public interface PlatformTransactionManager {
    TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException;
    void commit(TransactionStatus status) throws TransactionException;
    void rollback(TransactionStatus status) throws TransactionException;
}
Nach dem Login kopieren

offizielle Website-Adresse von spring thing
Die gängigsten Implementierungsklassen sind:

  1. DataSourceTransactionManager: unten Schicht verwendet JDBC-Transaktionsverwaltung

  2. HibernateTransactionManager: Die zugrunde liegende Schicht verwendet Hibernate-Transaktionsverwaltung

  • TransactionDefinition:
    Transaktion Definition: Transaktionen können definiert werden Zugehörige Informationen, Transaktionsausbreitungsverhalten, Isolationsstufe, Timeout-Informationen, ob schreibgeschützt

package org.springframework.transaction;

//可以看到事物的定义也是一个接口
public interface TransactionDefinition {
    //事物的传播行为,7种
    int PROPAGATION_REQUIRED = 0;
    int PROPAGATION_SUPPORTS = 1;
    int PROPAGATION_MANDATORY = 2;
    int PROPAGATION_REQUIRES_NEW = 3;
    int PROPAGATION_NOT_SUPPORTED = 4;
    int PROPAGATION_NEVER = 5;
    int PROPAGATION_NESTED = 6;
    
    //事物的隔离级别五种
    int ISOLATION_DEFAULT = -1;
    int ISOLATION_READ_UNCOMMITTED = 1;
    int ISOLATION_READ_COMMITTED = 2;
    int ISOLATION_REPEATABLE_READ = 4;
    int ISOLATION_SERIALIZABLE = 8;

    //事物的超时时间,-1代表没有超时时间
    int TIMEOUT_DEFAULT = -1;

    int getPropagationBehavior();

    int getIsolationLevel();

    int getTimeout();

    boolean isReadOnly();

    String getName();
}
Nach dem Login kopieren
  • TransactionStatus: Transaktionsstatus
    Transaktion Status: Datensatzverwaltungstransaktionsprozess Objekte im Transaktionsstatus

Die sieben Transaktionsausbreitungsverhalten im Frühling

Das Transaktionsausbreitungsverhalten wird verwendet, um das Problem gegenseitiger Aufrufe zwischen Unternehmen zu lösen Methoden

Offizielles Website-Portal

Voraussetzung:
Methode A() in Methode B() aufrufen

Verschachtelte Transaktion

  • PROPAGATION_NESTED: Es gibt eine Transaktion in A und Transaktion A wird normal ausgeführt. Nachdem Transaktion A ausgeführt wurde, legen Sie einen Speicherpunkt fest und führen Sie Vorgang B aus. Wenn B eine Ausnahme auslöst, können Sie zur Sicherheit zur Ausgangsposition oder zum Speicherpunkt zurückkehren

dass sich die Operation in derselben Transaktion befindet

  • PROPAGATION_REQUIRED: Wenn Methode B Methode A aufruft und Methode A eine Transaktion hat, verwendet Methode B die Transaktion in A. Wenn in A keine Transaktion vorhanden ist, erstellt B eine Transaktion

  • PROPAGATION_SUPPORTS: B ruft A auf. Wenn in A eine Transaktion vorhanden ist, wird die Transaktion in A verwendet Keine Transaktion in A, B wird die Transaktion nicht verwenden

  • PROPAGATION_MANDATORY: Wenn A eine Transaktion hat, verwenden Sie die Transaktion in A, und es gibt keine Transaktion in A, werfen Sie eine Ausnahme

Stellen Sie sicher, dass sich die Vorgänge nicht im selben

  • PROPAGATION_REQUIRES_NEW in der Transaktion befinden: Es gibt eine Transaktion in A, unterbrechen Sie die A-Transaktion und die Die von B eröffnete Transaktion umfasst nur ihre eigenen Vorgänge. Es gibt keine Transaktion in A und die von B erstellte Transaktion enthält nur ihre eigene Operation

  • PROPAGATION_NOT_SUPPORTED: Es gibt eine Transaktion in A, A ist ausgesetzt und B verwendet die Transaktion nicht
    *PROPAGATION_NEVER: Es gibt eine Transaktion in A und B wird ausgelöst. Ausnahme

Spring bietet zwei Transaktionsverwaltungsmethoden

  • Deklarative Transaktionsverwaltung : Transaktionen deklarativ in der Spring-Konfigurationsdatei verarbeiten Als Ersatz für die codebasierte Transaktionsverarbeitung (häufiger verwendet)

  • Transaktionsverwaltung programmieren: Codebasierte Transaktionsverarbeitung erfordert das Schreiben von Code im Programm

    Deklaratives Transaktionsmanagement

    basiert auf XML

<!--配置事务管理器-->
    <bean id="trancationManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
        <property name="dataSource" ref="dataSource" ></property>
    </bean>
<!--配置事务-->
    <tx:advice id="myAdvice" transaction-manager="trancationManager">
        <tx:attributes>
            <!--配置事务传播和事务隔离-->
            <tx:method name="save*" propagation="REQUIRED" isolation="REPEATABLE_READ"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="find*" read-only="true"/>
            <tx:method name="*" propagation="REQUIRED" />
        </tx:attributes>
    </tx:advice>
    <!--事务是利用aop实现的-->
    <aop:config>
        <aop:pointcut id="ponitcut" expression="execution(* com.amber.xml.service.AccountServiceImpl.transferMoney(..))"></aop:pointcut>
        <aop:advisor advice-ref="myAdvice" pointcut-ref="ponitcut" />
    </aop:config>
Nach dem Login kopieren

save* stellt eine Methode dar, die mit save beginnt, verwendet PROPATATION_REQUIRED-Transaktionsweitergabe und REPEATABLE_READ-Transaktionsisolation

基于注解

<!--配置事务管理器-->
    <bean id="trancationManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
        <property name="dataSource" ref="dataSource" ></property>
    </bean>
    <!--开启注解事务-->
    <tx:annotation-driven transaction-manager="trancationManager" />
Nach dem Login kopieren

使用tx:annotation-driven 开启事务的注解后,在使用的时候只需要在类或者方法上加入@Transactional就可以开启注解

基于xml的事务和基于注解的事务对比

  • 文件配置对比
    事务基于注解简化了xml中的

  • 使用比较
    使用注解必须在类或者方法上添加@Trasactional,如果有多个业务类,则需要在每个业务类上添加
    使用xml只需要在配置文件中配置包名即可

事务github代码

Das obige ist der detaillierte Inhalt vonRelevante Einführung in das Spring-Transaktionsmanagement (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ein neues Programmierparadigma, wenn Spring Boot auf OpenAI trifft Ein neues Programmierparadigma, wenn Spring Boot auf OpenAI trifft Feb 01, 2024 pm 09:18 PM

Im Jahr 2023 ist die KI-Technologie zu einem heißen Thema geworden und hat enorme Auswirkungen auf verschiedene Branchen, insbesondere im Programmierbereich. Die Bedeutung der KI-Technologie wird den Menschen zunehmend bewusst, und die Spring-Community bildet da keine Ausnahme. Mit der kontinuierlichen Weiterentwicklung der GenAI-Technologie (General Artificial Intelligence) ist es entscheidend und dringend geworden, die Erstellung von Anwendungen mit KI-Funktionen zu vereinfachen. Vor diesem Hintergrund entstand „SpringAI“ mit dem Ziel, den Prozess der Entwicklung von KI-Funktionsanwendungen zu vereinfachen, ihn einfach und intuitiv zu gestalten und unnötige Komplexität zu vermeiden. Durch „SpringAI“ können Entwickler einfacher Anwendungen mit KI-Funktionen erstellen, wodurch diese einfacher zu verwenden und zu bedienen sind.

Verwenden Sie Spring Boot und Spring AI, um generative Anwendungen für künstliche Intelligenz zu erstellen Verwenden Sie Spring Boot und Spring AI, um generative Anwendungen für künstliche Intelligenz zu erstellen Apr 28, 2024 am 11:46 AM

Als Branchenführer bietet Spring+AI durch seine leistungsstarke, flexible API und erweiterte Funktionen führende Lösungen für verschiedene Branchen. In diesem Thema werden wir uns mit den Anwendungsbeispielen von Spring+AI in verschiedenen Bereichen befassen. Jeder Fall wird zeigen, wie Spring+AI spezifische Anforderungen erfüllt, Ziele erreicht und diese LESSONSLEARNED auf ein breiteres Anwendungsspektrum ausdehnt. Ich hoffe, dieses Thema kann Sie dazu inspirieren, die unendlichen Möglichkeiten von Spring+AI tiefer zu verstehen und zu nutzen. Das Spring-Framework hat eine mehr als 20-jährige Geschichte im Bereich der Softwareentwicklung, und seit der Veröffentlichung der Spring Boot 1.0-Version sind 10 Jahre vergangen. Nun kann niemand diesen Frühling bestreiten

Was sind die Implementierungsmethoden für programmatische Frühlingstransaktionen? Was sind die Implementierungsmethoden für programmatische Frühlingstransaktionen? Jan 08, 2024 am 10:23 AM

So implementieren Sie programmgesteuerte Spring-Transaktionen: 1. Verwenden Sie TransactionCallback und TransactionCallbackWithoutResult; 4. Verwenden Sie TransactionTemplate in Kombination mit @Transactional;

So implementieren Sie geplante Aufgaben in Java Spring So implementieren Sie geplante Aufgaben in Java Spring May 24, 2023 pm 01:28 PM

Java implementiert geplante Aufgaben In der mit Jdk gelieferten Bibliothek gibt es zwei Möglichkeiten, geplante Aufgaben zu implementieren: eine ist Timer und die andere ist ScheduledThreadPoolExecutor. Wenn Timer+TimerTask einen Timer erstellt, wird ein Thread erstellt, der zum Planen von TimerTask-Aufgaben verwendet werden kann. Der Timer verfügt über vier Konstruktionsmethoden. Sie können den Namen des Timer-Threads angeben und angeben, ob er als Daemon-Thread festgelegt werden soll. Der Standardname ist Timer-Nummer und der Standardname ist kein Daemon-Thread. Es gibt drei Hauptmethoden: cancel(): Aufgabenplanung beenden, alle derzeit geplanten Aufgaben abbrechen, laufende Aufgaben sind davon nicht betroffen. purge(): Aufgaben aus der Aufgabenwarteschlange entfernen

Die Unterschiede und Zusammenhänge zwischen Spring Boot und Spring Cloud Die Unterschiede und Zusammenhänge zwischen Spring Boot und Spring Cloud Jun 22, 2023 pm 06:25 PM

SpringBoot und SpringCloud sind beides Erweiterungen des Spring Framework, die Entwicklern dabei helfen, Microservice-Anwendungen schneller zu erstellen und bereitzustellen. Sie haben jedoch jeweils unterschiedliche Zwecke und Funktionen. SpringBoot ist ein Framework zum schnellen Erstellen von Java-Anwendungen, das es Entwicklern ermöglicht, Spring-basierte Anwendungen schneller zu erstellen und bereitzustellen. Es bietet eine einfache und leicht verständliche Möglichkeit, eigenständige, ausführbare Spring-Anwendungen zu erstellen

Die 7 am häufigsten verwendeten Anmerkungen in Spring, der mächtigsten Organisation der Geschichte! Die 7 am häufigsten verwendeten Anmerkungen in Spring, der mächtigsten Organisation der Geschichte! Jul 26, 2023 pm 04:38 PM

Mit der Aktualisierung und Iteration der Technologie begann Java5.0, Anmerkungen zu unterstützen. Als führendes Framework in Java hat Spring seit der Aktualisierung auf Version 2.5 langsam damit begonnen, die XML-Konfiguration aufzugeben, und es werden mehr Annotationen zur Steuerung des Spring-Frameworks verwendet.

So legen Sie die Transaktionsisolationsstufe im Frühjahr fest So legen Sie die Transaktionsisolationsstufe im Frühjahr fest Jan 26, 2024 pm 05:38 PM

So legen Sie die Transaktionsisolationsstufe in Spring fest: 1. Verwenden Sie die Annotation @Transactional. 3. Legen Sie sie in der Spring-Konfigurationsdatei fest. 4. Legen Sie sie in der Java-Konfigurationsklasse fest. Detaillierte Einführung: 1. Verwenden Sie die Annotation @Transactional, fügen Sie die Annotation @Transactional zu der Klasse oder Methode hinzu, die eine Transaktionsverwaltung erfordert, und legen Sie die Isolationsstufe im Attribut fest. 2. In der Spring-Konfigurationsdatei usw.

Lernen Sie Spring Cloud von Grund auf Lernen Sie Spring Cloud von Grund auf Jun 22, 2023 am 08:11 AM

Als Java-Entwickler ist das Erlernen und Verwenden des Spring-Frameworks eine wesentliche Fähigkeit. Mit der Popularität von Cloud Computing und Microservices ist das Erlernen und Verwenden von Spring Cloud zu einer weiteren Fähigkeit geworden, die beherrscht werden muss. SpringCloud ist ein auf SpringBoot basierendes Entwicklungstoolset zum schnellen Aufbau verteilter Systeme. Es bietet Entwicklern eine Reihe von Komponenten, darunter Dienstregistrierung und -erkennung, Konfigurationscenter, Lastausgleich und Leistungsschalter usw., sodass Entwickler Mikrofunktionen erstellen können

See all articles