ホームページ  >  記事  >  Java  >  Springboot プロジェクトのトランザクション ラベル検証の問題を解決する方法

Springboot プロジェクトのトランザクション ラベル検証の問題を解決する方法

WBOY
WBOY転載
2023-05-10 23:28:12928ブラウズ

1. 問題の説明

スプリングブート プロジェクトでのトランザクションの設定は、以前からタグを通じて使用されていましたが、最後の内部プロジェクトでは、他の人のコードで使用されていたため、そうではないことが判明しました。動作すると (フレームワーク保証があるため、心配する必要はありません)、新しいスタートアップ プロジェクトで再度使用され、検証後、springboot プロジェクトの下に 2 つのタグを設定するだけで十分です。

2. 解決策

2.1 説明

(1) 実際には 2 つのタグがあり、1 つはスタートアップ クラス (@EnableTransactionManagement) で使用され、もう 1 つは次の場所で使用されます。 Where to configure (@Transactional);

(2) スキーム、以前のテスト プロジェクトを見つけました。1 つの方法には、データの一部をデータベースに保存し、1 を 0 で除算したコードが含まれます。トランザクション タグを追加するかどうかの違いは何ですか;

2.2 コードの説明

(1)コントローラー クラス

@ResponseBody
    @GetMapping("/tstest")
    public String tstest() {
        this.userService.tstest();
        return "SUCCESS";
    }

(2)サービス クラス

public void tstest() {
        //保存
        UserEntity userEntity = new UserEntity();
        userEntity.setType(0);
        userEntity.setOpenid("1111");
        insert(userEntity);
	
				//报错,回滚
        int i = 1/0;
        System.out.println(i);
    }

2.3 検証 1、トランザクションはありません

##トランザクション ラベルを追加しないでください。コードは上記のとおりです。

(1) まずデータベースをクリアします;

(2) tstest リクエストを実行します;

Springboot プロジェクトのトランザクション ラベル検証の問題を解決する方法

挿入後に次のことがわかりますコード行が実行され、データがデータベースに保存されます。

Springboot プロジェクトのトランザクション ラベル検証の問題を解決する方法

その後、実行が完了します (1/0)。エラー コードはエラーを報告しますが、データベース内のデータはまだ存在します。データはロールバックされず、整合性は保たれます。維持されていない。

Springboot プロジェクトのトランザクション ラベル検証の問題を解決する方法

2.4 検証 2、トランザクションがあります

(1) 2 つのラベルを追加します。1 つはスタートアップ クラスのメソッド、もう 1 つは tstest メソッドです。


Springboot プロジェクトのトランザクション ラベル検証の問題を解決する方法

Springboot プロジェクトのトランザクション ラベル検証の問題を解決する方法#(2) まずデータをクリアし、挿入を実行します。


Springboot プロジェクトのトランザクション ラベル検証の問題を解決する方法挿入コード行が実行されましたが、この時点ではデータベースにデータが存在しないことが判明しました。実行完了後、コードはエラーを報告し、データはロールバックされ、データはこれは、トランザクションが終了に達したことを示しており、その結果、データはロールバックされます。

以上がSpringboot プロジェクトのトランザクション ラベル検証の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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