Table of Contents
The use of spring transactions and declarative transactions
Transaction isolation level in the database
Dirty Reading
Non-repeatable reading
Phantom reading
spring’s five isolation levels
ISOLATION_DEFAULT
ISOLATION _READ _UNCOMMITTED
ISOLATION _READ _COMMITTED
ISOLATION _REPEATABLE _READ
ISOLATION _SERIALIZBLE
The propagation of transactions (spring provides seven)
TransationDefinition.PROPAGETION.REQUIRED
TransationDefinition.PROPAGETION.REQUIRED_NEW
TransationDefinition.PROPAGETION.SUPPORTS
TransationDefinition.PROPAGATION.NOT_SUPPORTED
TransationDefinition.PROPAGETION_NEVER
TransationDefinition.PROPAGETION_MANDATORY
TransationDefinition.PROPAGETION_NESTED
Declarative transaction
Use
Source code
Default value
Notes
Home Database Mysql Tutorial How to understand spring transactions and the use of declarative transactions

How to understand spring transactions and the use of declarative transactions

Sep 15, 2018 am 11:27 AM

The content of this article is about how to understand spring transactions and the use of declarative transactions, including the isolation level of things in the database. It has certain reference value. Friends in need can refer to it. I hope it will be useful to you. Helps.

The use of spring transactions and declarative transactions

(Students, start reviewing the database knowledge given to teachers by the university!!)

Transaction: A program execution unit (unit) that accesses and possibly updates various data items in the database.

Transactions have four attributes: (ACID)

Atomicity: A transaction is an indivisible unit of work, and all operations included in the transaction are either done or none.

Consistency; the transaction must change the database from one consistency state to another consistency state. Consistency and atomicity are closely related.

Isolation: The execution of a transaction cannot be interfered with by other things. That is, the internal operations and data used in a transaction are isolated from other concurrent transactions, and transactions executed concurrently cannot interfere with each other.

Persistence: Persistence, also called permanence, means that once a transaction is submitted, its changes to the data in the database should be permanent.

Transaction purpose: To maintain data consistency and integrity.

Consistency: The data status of a business chain is consistent and cannot be partially changed and partially unchanged.

Integrity: The data of a business chain is complete, either completed and failed at the same time, partial writing cannot succeed, and partial writing fails.

A simple understanding of the consistency and integrity of transactions means that we either live together or die together, we cannot live alone. (Like miserable love...^ _ ^)

Transaction isolation level in the database

Before understanding the transaction isolation level, let’s first understand the possible causes that often occur in the data Several situations in which business logic fails.

Dirty Reading

When a transaction is accessing data and has modified the data and has not yet submitted it to the database; at this time, another transaction also accesses the data and then uses this data.

For example: Zhang San’s bank account now has 1000, and now Zhang San deposits 200, then when Zhang San clicks submit, his wife (the hard-working Zhang San is saving pocket money for his wife) is shopping in the mall and spending money. 500. Zhang San checked the balance and found that it was only 500 (Zhang San was confused...). Then the two quarreled over 200. The above is what caused a family war due to excessive reading.

Non-repeatable reading

Non-repeatable reading: Read the same data multiple times within a transaction. Before this transaction ended, another transaction also accessed the data. Between the two reads of data by the first transaction, the data read by the first transaction may be different due to modifications by the second transaction. In this way, the data read twice within a transaction is different. (That is, the same data cannot be read)

Phantom reading

A transaction modifies the data in a table. This modification involves all data rows in the table. At the same time, The second transaction inserts a new row of data into the table. It will happen that the user who operates the first transaction finds that there are still unmodified data rows in the table. It was like a hallucination.

spring’s five isolation levels

ISOLATION_DEFAULT

represents the default isolation level of the underlying database. For most databases, the usual value is: ISOLATION _READ _COMMITTED

ISOLATION _READ _UNCOMMITTED

Indicates that a transaction can read data modified by another transaction but not yet committed, and cannot prevent dirty reads and non-repeatable reads.

ISOLATION _READ _COMMITTED

A transaction can only read data that has been submitted by another transaction. It can prevent dirty reads, but cannot prevent non-repeatable reads. (Recommended value in most cases)

ISOLATION _REPEATABLE _READ

A transaction can repeatedly execute a query multiple times during the entire process, and the records returned each time are the same. Even if there is new data between multiple queries to satisfy the query, these new records will be ignored. Can prevent dirty reads and non-repeatable reads.

ISOLATION _SERIALIZBLE

All transactions are executed one by one in sequence, so that there is no possibility of interference between transactions. It can prevent dirty reads, non-repeatable reads and phantom reads.

The propagation of transactions (spring provides seven)

refers to the relationship between transactions. For example, if a transaction contains another transaction, then the propagation is used to determine mutual execution.

TransationDefinition.PROPAGETION.REQUIRED

If a transaction currently exists, join the transaction; if there is currently no transaction, create a new transaction.
Default transaction in spring. Suitable for most situations.

TransationDefinition.PROPAGETION.REQUIRED_NEW

Create a new transaction. If a transaction currently exists, suspend the current transaction.
means creating a new transaction, which has nothing to do with the original transaction.

TransationDefinition.PROPAGETION.SUPPORTS

If a transaction currently exists, join the transaction; if there is currently no transaction, continue running in a non-transactional manner.
This method is very casual. If you don’t have it, you don’t have it. If you have it, you have it. It’s a bit of an indifferent attitude.

TransationDefinition.PROPAGATION.NOT_SUPPORTED

Run in a non-transactional manner. If a transaction currently exists, the current transaction will be suspended.
This method is very tough. If you don’t have it, you won’t have it. If you have it, you won’t support it. Just hang it up and ignore it.

TransationDefinition.PROPAGETION_NEVER

Run in a non-transactional manner and throw an exception if a transaction currently exists.
This method is more forceful. If there is no problem, there will be no problem. If there is a problem, an error will be reported. He declared to everyone: I never support affairs.

TransationDefinition.PROPAGETION_MANDATORY

If a transaction currently exists, join the transaction; if there is currently no transaction, throw an exception.
This method can be said to be the toughest. If there is no transaction, an error will be reported directly. It says to the whole world: I must have a transaction.

TransationDefinition.PROPAGETION_NESTED

If a transaction currently exists, create a transaction to run as a nested transaction of the current transaction; if there is currently no transaction, this value is equivalent to
TransationDefinition .PROPAGETION_REQUIRED

Declarative transaction

Use

Now look at springboot, if you use declarative transaction:

@Transactional
public void save(Object ob){

}
Copy after login

Just add @ on the method Transactional annotation methods can be managed by transactions.

Source code

Look at the source code of the annotation Transactional:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Transactional {

@AliasFor("transactionManager")
String value() default "";


@AliasFor("value")
String transactionManager() default "";

Propagation propagation() default Propagation.REQUIRED;

Isolation isolation() default Isolation.DEFAULT;

int timeout() default TransactionDefinition.TIMEOUT_DEFAULT;


boolean readOnly() default false;

Class<? extends Throwable>[] rollbackFor() default {};


String[] rollbackForClassName() default {};

Class<? extends Throwable>[] noRollbackFor() default {};


String[] noRollbackForClassName() default {};

}
Copy after login

Default value

readOnly: Whether it is only read-only. Both reading and writing are possible by default

timeout: Transaction timeout, no timeout by default

isolation: Transaction isolation level default: TransactionDefinition.ISOLATION_DEFAULT (see isolation level above)

propagation: Transaction propagation attribute default: TransactionDefinition.PROPAGATION_REQUIRED

Notes

  • Annotations should only be applied to public methods

  • Self-calling problem: If there is no annotated method in the class and calls an annotated method, then when the external method calls an unannotated method, the annotated method will not generate a transaction

The above is the detailed content of How to understand spring transactions and the use of declarative transactions. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1662
14
PHP Tutorial
1262
29
C# Tutorial
1235
24
MySQL's Role: Databases in Web Applications MySQL's Role: Databases in Web Applications Apr 17, 2025 am 12:23 AM

The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

Laravel Introduction Example Laravel Introduction Example Apr 18, 2025 pm 12:45 PM

Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

How to start mysql by docker How to start mysql by docker Apr 15, 2025 pm 12:09 PM

The process of starting MySQL in Docker consists of the following steps: Pull the MySQL image to create and start the container, set the root user password, and map the port verification connection Create the database and the user grants all permissions to the database

MySQL and phpMyAdmin: Core Features and Functions MySQL and phpMyAdmin: Core Features and Functions Apr 22, 2025 am 12:12 AM

MySQL and phpMyAdmin are powerful database management tools. 1) MySQL is used to create databases and tables, and to execute DML and SQL queries. 2) phpMyAdmin provides an intuitive interface for database management, table structure management, data operations and user permission management.

Solve database connection problem: a practical case of using minii/db library Solve database connection problem: a practical case of using minii/db library Apr 18, 2025 am 07:09 AM

I encountered a tricky problem when developing a small application: the need to quickly integrate a lightweight database operation library. After trying multiple libraries, I found that they either have too much functionality or are not very compatible. Eventually, I found minii/db, a simplified version based on Yii2 that solved my problem perfectly.

Laravel framework installation method Laravel framework installation method Apr 18, 2025 pm 12:54 PM

Article summary: This article provides detailed step-by-step instructions to guide readers on how to easily install the Laravel framework. Laravel is a powerful PHP framework that speeds up the development process of web applications. This tutorial covers the installation process from system requirements to configuring databases and setting up routing. By following these steps, readers can quickly and efficiently lay a solid foundation for their Laravel project.

MySQL vs. Other Programming Languages: A Comparison MySQL vs. Other Programming Languages: A Comparison Apr 19, 2025 am 12:22 AM

Compared with other programming languages, MySQL is mainly used to store and manage data, while other languages ​​such as Python, Java, and C are used for logical processing and application development. MySQL is known for its high performance, scalability and cross-platform support, suitable for data management needs, while other languages ​​have advantages in their respective fields such as data analytics, enterprise applications, and system programming.

MySQL for Beginners: Getting Started with Database Management MySQL for Beginners: Getting Started with Database Management Apr 18, 2025 am 12:10 AM

The basic operations of MySQL include creating databases, tables, and using SQL to perform CRUD operations on data. 1. Create a database: CREATEDATABASEmy_first_db; 2. Create a table: CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY, titleVARCHAR(100)NOTNULL, authorVARCHAR(100)NOTNULL, published_yearINT); 3. Insert data: INSERTINTObooks(title, author, published_year)VA

See all articles