Heim > Java > javaLernprogramm > So verwenden Sie die programmgesteuerte Springboot-Transaktion TransactionTemplate

So verwenden Sie die programmgesteuerte Springboot-Transaktion TransactionTemplate

PHPz
Freigeben: 2023-06-01 17:40:24
nach vorne
2098 Leute haben es durchsucht

Verwendung von TransactionTemplate

Zusammenfassung: Injizieren Sie TransactionTemplate in die Klasse, um programmgesteuerte Transaktionen in Springboot zu verwenden.

spring unterstützt zwei Methoden: programmatisches Transaktionsmanagement und deklaratives Transaktionsmanagement.

Programmatische Transaktionsverwaltung verwendet TransactionTemplate oder direkt den zugrunde liegenden PlatformTransactionManager. Spring empfiehlt die Verwendung von TransactionTemplate zum Verwalten von Programmiertransaktionen.

Deklaratives Transaktionsmanagement basiert auf AOP. Sein Kern besteht darin, die Methode vorher und nachher abzufangen und dann eine Transaktion zu erstellen oder ihr beizutreten, bevor die Zielmethode ausgeführt wird. Nachdem die Zielmethode ausgeführt wurde, wird die Transaktion entsprechend dem Ausführungsstatus festgeschrieben oder zurückgesetzt. Spring Boot empfiehlt die Verwendung der Annotation @Transactional, um eine deklarative Transaktionsverwaltung zu implementieren.

1. Warum es verwenden?

In den meisten Fällen reicht es aus, die @Transactional-Annotation für die Deklaration der Transaktion zu deklarieren. Die Steuerbarkeit der deklarativen @Transactional-Transaktion ist jedoch zu schwach hängt von der Methode oder Klasse ab und kann nicht detailliert beschrieben werden.

Wenn die ersten 10 SQL-Anweisungen einer Methode alle Select-Query-Anweisungen sind und nur die letzten 2 SQL-Anweisungen Update-Anweisungen sind, können nur die letzten 2 SQL-Anweisungen verarbeitet werden.

2. So verwenden Sie

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
Nach dem Login kopieren

, um das Abhängigkeitspaket mybatis-spring-boot-starter in Springboot einzuführen.

Das mybatis-spring-boot-starter-Abhängigkeitspaket enthält die Abhängigkeiten von spring-boot-starter-jdbc, enthält den DataSourceTransactionManager-Transaktionsmanager und die automatische Injektionskonfigurationsklasse DataSourceTransactionManagerAutoConfiguration.

Zur Verwendung im Code fügen Sie einfach TransactionTemplate in die Bean ein:

@Service
public class TestServiceImpl {
    @Resource
    private TransactionTemplate transactionTemplate;
 
    public Object testTransaction() {
        //数据库查询
        dao.select(1);
        return transactionTemplate.execute(status -> {
            //数据库新增
            dao.insert(2);
            dao.insert(3);
            return new Object();
        });
    }
}
Nach dem Login kopieren

TransactionTemplate ist einfach zu verwenden

/**
 * 事务模板
 * @author zz
 *
 */ 
public class TransactionTemplateSupport {
 
	@Autowired
	private PlatformTransactionManager transactionManager;	
	private TransactionTemplate requiredTransactionTemplate;	
	protected TransactionTemplate getRequiresNewTransactionTemplate(){
		if (requiredTransactionTemplate == null){
			requiredTransactionTemplate = new TransactionTemplate(transactionManager);
			requiredTransactionTemplate.setPropagationBehavior(TransactionTemplate.PROPAGATION_REQUIRED);
		//	requiredTransactionTemplate.setReadOnly(true);
		//	requiredTransactionTemplate.setTimeout(30000);
		}
		
		return requiredTransactionTemplate;
	} 
}
Nach dem Login kopieren
 @Service
public class TestTransaction extends TransactionTemplateSupport  { 
    @Autowired
    private JdbcTemplate jdbcTemplate ;
 
    @Autowired
    private TransactionTemplate transactionTemplate;
 
   // @Transactional
    public void test(){
 
        jdbcTemplate.execute("insert into user value (1,&#39;aaa&#39;,&#39;aaa&#39;,&#39;aaa&#39;)"); 
        int i = 1/0; 
        jdbcTemplate.execute("insert into user value (2,&#39;aaa&#39;,&#39;aaa&#39;,&#39;aaa&#39;)"); 
    } 
 
    public void test2(){ 
      getRequiresNewTransactionTemplate()
      //  transactionTemplate
                .execute(new TransactionCallback<Void>() {
 
            @Override
            public Void doInTransaction(TransactionStatus status) {  
                jdbcTemplate.execute("insert into user value (11,&#39;BBBB&#39;,&#39;aaa&#39;,&#39;aaa&#39;)");
 
                int i = 1/0; 
                jdbcTemplate.execute("insert into user value (21,&#39;aaa&#39;,&#39;NNNN&#39;,&#39;aaa&#39;)");  
                return null;
            }
        });
    }  
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die programmgesteuerte Springboot-Transaktion TransactionTemplate. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage