0

私はフラッシュ()、コミット()について多くのことをグーグルで調べており、休止状態のバイブル(Java Persistance with Hibernate)を読みました。

これらの方法がどのように機能するかについての私の理解には、まだ矛盾があるようです。

ここにやや不可解な観察があります:

手動フラッシュモードを使用すると仮定しましょう。新しいセッションを開始し、トランザクションを開始し、いくつかの永続オブジェクトをロードして変更してから、セッションをフラッシュして閉じますが、このプロセス中にトランザクションで commit メソッドを実行しません。

私が理解している限り(休止状態の聖書から)、この場合、flush() が呼び出されたにもかかわらず、変更はデータベースに保存されません。これは正しい観察ですか?

ここに別の関連する質問があります。休止状態のjavadocは次のように述べています。

フラッシュは、基になる永続ストアを、メモリに保持されている永続状態と同期するプロセスです。

これは正確にはどういう意味ですか? 同期という用語は、ここでは少しあいまいです。この説明は、上記の観察を説明していません (さらに、矛盾しています!)。

ネットでも休止状態の聖書でも、この質問に対する答えが見つからないため、ここで同期という言葉の意味を正確に明確にしてください。

4

2 に答える 2

0

はい、セッションで flush() メソッドを呼び出すと、オブジェクトの変更は DB 関連のエンティティと同期されますが、DB には更新されません。Commit() を呼び出すと、更新されます。

于 2016-01-05T14:55:05.887 に答える