トランザクションとトランザクション内のクエリについて疑問があります。現在、Hibernate で PostgreSQL 8.4 を使用しています。
同じトランザクション内でクエリを実行すると、トランザクションに最近挿入されたデータを取得できるかどうかわかりません。
例えば。
Begin Transaction();
Save(A);
Get(A);
End Transaction();
クエリは最近保存された行を返しますか?
トランザクションとトランザクション内のクエリについて疑問があります。現在、Hibernate で PostgreSQL 8.4 を使用しています。
同じトランザクション内でクエリを実行すると、トランザクションに最近挿入されたデータを取得できるかどうかわかりません。
例えば。
Begin Transaction();
Save(A);
Get(A);
End Transaction();
クエリは最近保存された行を返しますか?
はい、そうなります。トランザクション コンテキストにより、このトランザクションがコミットされるまで、データは他のデータベース トランザクションから見えなくなります。
Hibernate を使用している場合、save() 呼び出しは、セッション キャッシュ (キャッシュ) がすぐに行われるため、必ずしもオブジェクトをデータベースに書き込む必要はありません。しかし、連続して get() を実行すると、セッション キャッシュがデータベースにフラッシュされ、最近作成されたオブジェクトが返されます。
はい、データベースに保存されているかどうかに関係なく、セッションキャッシュからデータを取得します。