通常はConnection.commit()
を使用する必要があります Connection.setAutoCommit(true)
ではありません トランザクションの使用からautoCommitの「ステートメントごとのトランザクション」モデルに切り替える場合を除いて、トランザクションをコミットします。
そうは言っても、Connection.setAutoCommit(true)
を呼び出す トランザクション中にトランザクションをコミットします(ドライバーがJDBC 4.1仕様のセクション10.1.1に準拠している場合)。ただし、接続でautoCommitを有効/無効にすると、単にコミットするよりも接続のオーバーヘッドが高くなる可能性があるため(たとえば、トランザクションマネージャーを切り替える必要があるため、追加のチェックを行うため)、その後autoCommitを維持する場合にのみこれを行う必要があります。など)。
Connection.commit()
も使用する必要があります ネイティブSQLコマンドCOMMIT
は使用しないでください 。接続のドキュメントで詳しく説明されているように:
重要なのは、commit()
のようなコマンドです。 およびsetAutoCommit(boolean)
ResultSets
を閉じるなど、バックグラウンドでより多くの作業を行う可能性があります Statements
を閉じるかリセットします 。 SQLコマンドCOMMIT
を使用する これをバイパスし、ドライバー/接続を誤った状態にする可能性があります。