検索
ホームページJava&#&チュートリアルSpringboot プログラムによるトランザクション TransactionTemplate の使用方法

TransactionTemplate の使用

概要: TransactionTemplate をクラスに挿入して、スプリングブートでプログラムによるトランザクションを使用します。

spring は、プログラムによるトランザクション管理と宣言的なトランザクション管理という 2 つの方法をサポートしています。

プログラムによるトランザクション管理では、TransactionTemplate を使用するか、基盤となる PlatformTransactionManager を直接使用します。 Spring では、プログラミング トランザクションを管理するために TransactionTemplate を使用することを推奨しています。

宣言型トランザクション管理は AOP に基づいて構築されています。その本質は、前後のメソッドをインターセプトし、対象のメソッドが開始される前にトランザクションを作成または参加し、対象のメソッドの実行後、実行状況に応じてトランザクションをコミットまたはロールバックすることです。 Spring Boot では、 @Transactional アノテーションを使用して宣言型トランザクション管理を実装することをお勧めします。

1. なぜそれを使用するのでしょうか?

ほとんどの場合、メソッド上で @Transactional アノテーションを宣言するだけでトランザクションを宣言でき、簡単かつ高速で便利ですが、@Transactional 宣言型トランザクションの制御性は非常に弱く、メソッドまたはクラスで宣言されるため、きめ細かいトランザクション制御は不可能です。

メソッドの最初の 10 の SQL ステートメントがすべて選択クエリ ステートメントであり、最後の 2 つの SQL ステートメントのみが更新ステートメントである場合、最後の 2 つの SQL ステートメントのみを処理できます。

2.

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

を使用して mybatis-spring-boot-starter 依存関係パッケージを springboot に導入する方法。

mybatis-spring-boot-starter 依存関係パッケージには、spring-boot-starter-jdbc の依存関係が含まれています。spring-boot-starter-jdbc には、DataSourceTransactionManager トランザクション マネージャーと自動インジェクション構成クラス DataSourceTransactionManagerAutoConfiguration が含まれています。

コードで使用する場合は、TransactionTemplate を Bean に挿入するだけです:

@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();
        });
    }
}

TransactionTemplate は簡単に使用できます

/**
 * 事务模板
 * @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;
	} 
}
 @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;
            }
        });
    }  
}

以上がSpringboot プログラムによるトランザクション TransactionTemplate の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。