異常な運転が@Transactionalロールバックを保存することができますし、更新操作は他の操作を行い、キャッチを捕獲しようとしたJava

I.概要:それは実行時例外である場合、異常のキャプチャ、キャプチャは他のコードには影響しませんとは思わないが、トランザクション内で実行され、トランザクション管理に参加した、データベースの挿入は、アップデートは他の操作のようにバックをロールバックされます。

1、次のコードは、トライキャッチキャッチで例外が(データ長すぎる行1の列「project_id_」の)、UPDATE文の外に与えられずに、(内部例外をキャプチャするために)ログを印刷し、まだないということが、我々は成功するでしょう。トランザクションの説明はロールバックされます。

	@Transactional
	public void testIsRoback() {
		try {
			this.executeSql();
			// 可以正常执行的sql,测试在executeSql()方法抛运行时异常后还能入库吗
			jdbcTemplate.update("INSERT INTO t_finance_zndb_log (id_,project_id_) value ('1','2')");
		} catch (Exception e) {
			System.out.println("+++++++++++++++++++捕获到外部异常了+++++++++++++++++++++++");
			e.printStackTrace();
		}

	}
	
	private void executeSql() {

		try {
			// 模拟运行时异常
			jdbcTemplate.execute("INSERT INTO t_finance_zndb_log (id_,project_id_) value ('1','222')");
		} catch (Exception e) {
			System.out.println("------------------捕获到内部异常了-----------------------");
			e.printStackTrace();
		}
	}

ここに画像を挿入説明
非実行中の時間ならば2、異常な状況は同じではありません。あなたが見ることができますが、内部例外がキャッチさが、insert文はロールバックされていない、まだデータベースに保存されました。
ここに画像を挿入説明
ここに画像を挿入説明

公開された10元の記事 ウォンの賞賛0 ビュー353

おすすめ

転載: blog.csdn.net/weixin_43137113/article/details/105144595