2

オブジェクト/リレーショナル マッパーを使用してデータベースと通信しています。私の場合のライブラリは、トランザクション管理にも使用されるiBatisです。しかし、最近、文書化startTransaction()されたetc. が呼び出されたにもかかわらず、実際には iBatis がトランザクションを開始しないというケースがありました。いくつかのデバッグの後、私の側に設定ミスがあることがわかりました。

iBatis のせいにする人もいるかもしれませんが、今後はそのような誤解を避けたいと思います。だからここに質問があります:

現在のデータベース接続がトランザクションで実行されていることをプログラムでアサートするにはどうすればよいですか?

私が使用しているデータベースは、Oracle、MySQL、およびH2 (テスト用) です。

4

1 に答える 1

2

これが絶対にtxにあることを示しているかどうかは100%わかりませんが、Connection.getAutoCommit()は、接続が自動コミットモードであるかどうかを示します。ここで、自動コミット「オン」は「トランザクションなし」を意味します。

このアサーションが当てはまらない場合もありますが、ほとんどのJDBCベースのフレームワークはその設定を使用してトランザクションを制御します。

于 2010-01-18T23:30:46.420 に答える