2

connection.setAutoCommit(false)1つのトランザクションでいくつかのDMLステートメントをグループ化するために呼び出す必要がありますか?jdbc docには、自動コミットモードで新しい接続が作成されると記載されているため、少し混乱しています。同時に、Oracleには自動コミットトランザクションがありません。DMLステートメントが存在しない場合は、新しいトランザクションを開始します。したがって、私の理解でconnection.setAutoCommit(false)は、冗長です(別のRDMSに切り替えることを検討していないと仮定します)。

誰かがこれを明確にすることができますか?

ありがとう。

4

1 に答える 1

3

autocommit を true に設定すると、実際には、データベースに送信される各ステートメントが begin/commit で囲まれることになります。トランザクションは暗黙的に開始されますが、暗黙的にコミットされます。そして、同じことが次のステートメントにも当てはまります。

複数のステートメントを 1 つのトランザクションの一部にする場合は、autocommit を false に設定し、さまざまなステートメントを実行して、最後に commit を明示的に呼び出す必要があります。

于 2011-10-23T17:41:22.543 に答える