JpaRepository
を介してCRUD操作をテストすることにより、スプリングデータJPAを学習しようとしています。
save
とsaveAndFlush
の2つのメソッドに出会いました。これら2つの間に違いはありません。 save
を呼び出すと、私の変更もデータベースに保存されるので、saveAndFlush
を使用します。
saveAndFlush
では、変更はこのコマンドですぐにDBにフラッシュされます。 save
の場合、これは必ずしも正しいとは限らず、flush
またはcommit
コマンドが発行されるまで、メモリ内にとどまる場合があります。
ただし、トランザクションの変更をフラッシュしてコミットしなくても、変更はwo n'tでコミットされるまで外部のトランザクションに表示されることに注意してください。トランザクション。
あなたのケースでは、おそらく何らかのトランザクションメカニズムを使用します。これは、すべてがうまくいく場合にcommit
コマンドを発行します。
使用している休止状態のフラッシュモードに応じて(AUTO
がデフォルトです)save
は、変更をすぐにDBに書き込む場合と書き込まない場合があります。 saveAndFlush
を呼び出すと、モデルの状態とDBの同期が強制されます。
フラッシュモードAUTOを使用し、アプリケーションを使用して最初にデータを保存してから再度選択する場合、選択が最初にフラッシュをトリガーするため、save()
とsaveAndFlush()
の間にbahviorの違いは表示されません。 ドキュメント を参照してください。