通常は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を使用する これをバイパスし、ドライバー/接続を誤った状態にする可能性があります。