„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Grundlegendes zu @Transactional in Spring Boot

Grundlegendes zu @Transactional in Spring Boot

Veröffentlicht am 29.07.2024
Durchsuche:387

Understanding @Transactional in Spring Boot

Transaktionen in Spring Boot können mithilfe der @Transactional-Annotation verwaltet werden. In diesem Blogbeitrag untersuchen wir, wie Sie @Transactional verwenden, um die Datenkonsistenz sicherzustellen und die Fehlerbehandlung in Ihren Spring-Boot-Anwendungen zu vereinfachen.

1. Grundlegende Verwendung

Um @Transactional zu verwenden, platzieren Sie es normalerweise auf Methoden einer Serviceklasse, in der Sie das Transaktionsverhalten wünschen.

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService{

    @Transactional
    public void createUser() {
        // enter your transactional code here
    }
}

2. Ausbreitungs- und Isolationsstufen

Sie können die Weitergabe- und Isolationsstufen einer Transaktion angeben, um zu steuern, wie sich die Transaktion verhält:

  • Weitergabe: Definiert, wie sich die Transaktion verhält, wenn eine vorhandene Transaktion bereits ausgeführt wird.

  • Isolation: Definiert den Datensichtbarkeitsgrad der Transaktion.

@Transactional(propagation = Propagation.REQUIRED, 
              isolation = Isolation.READ_COMMITTED)
public void createUser() {
    // enter your transactional code here
}

3. Rollback-Regeln

Sie können angeben, welche Ausnahmen ein Rollback auslösen sollen:

@Transactional(rollbackFor = Exception.class)
public void createUser() {
    // your transactional code here
}

4. Nur-Lese-Transaktionen

Wenn Ihre Methode nur Daten liest und keine Schreibvorgänge ausführt, können Sie sie zur Leistungsoptimierung als schreibgeschützt markieren:

@Transactional(readOnly = true)
public void getUser() {
    // your read-only code here
}

5. Transaktionen für Klassen

Sie können @Transactional auch auf Klassenebene platzieren, um es auf alle Methoden in der Klasse anzuwenden:

@Service
@Transactional
public class UserService {

    public void getUser() {
        // transactional code
    }

    public void createUser() {
        // transactional code
    }
}

Beispieldienst mit Transaktionsmethoden

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService {

    @Transactional
    public void saveUser() {
        // code to save data
    }

    @Transactional(readOnly = true)
    public void fetchUser() {
        // code to fetch data
    }

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void newTransaction() {
        // code to execute in a new transaction
    }

    @Transactional(rollbackFor = {CustomException.class})
    public void performWithRollback() {
        // risky code that may throw CustomException
    }
}

Zusammenfassung

Mit @Transactional Spring Boot können Sie Transaktionen deklarativ verwalten und dabei genau angeben, wie sich Transaktionen in verschiedenen Szenarien verhalten sollen. Dies trägt dazu bei, die Datenkonsistenz sicherzustellen und die Fehlerbehandlung in Ihren Anwendungen zu vereinfachen.

Verweise

https://www.baeldung.com/spring-transactions-read-only

https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html

Github: https://github.com/tharindu1998/transactional-blog

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/tharindufdo/understanding-transactional-in-spring-boot-8ce?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3