1

spring と mybatis を使用して、実行中の mybatis データベース トランザクションを中断することは可能ですか?

例:

何千ものレコードを Oracle SQL データベースに挿入するアプリケーションがあります。これには約 5 分かかります。レコードの挿入中にユーザーが「停止」ボタンを押した場合、データベース トランザクションを停止し、変更をロールバックします。

データベース プロシージャが終了したら、トランザクション マネージャーを使用してトランザクションをロールバックできます。

TransactionStatus status = txManager.getTransaction(def);
txManager.rollback(status)

しかし、実行中にトランザクションを中断することはできません。

JDBC では、次のようにします。PreparedStatement.cancel()

MyBatis でこの PreparedStatement を取得しようとしましたが、可能ではないと思います。

誰でもこの問題の解決策を持っていますか?

4

1 に答える 1

0

セッションファクトリから現在のセッションを取得し、Session.cancelQuery() を呼び出すことができると思います。これは、db 呼び出しを使用してクエリの実行をキャンセルすると思います。

休止状態のドキュメントによると、スレッドセーフです

セッションを休止状態にする

現在のクエリの実行をキャンセルします。これは、別のスレッドから安全に呼び出すことができるセッションの唯一のメソッドです。

于 2012-07-16T07:11:11.263 に答える