14

誰かが休止状態のダーティセッションとは何か教えてくれないかと思っていました。条件クエリが挿入を実行すべきでないときに挿入を実行するという問題が発生しているようです。ダーティセッションに関連していると思いますが、ダーティセッションが何であるかを本当に知らなければ、問題を解決することはできません。また、ダーティセッションをどのように作成しますか。ありがとう。

4

4 に答える 4

25

Hibernateセッションはキャッシュです。データベースから読み取られたエンティティをキャッシュし、セッションがフラッシュされるまで(つまり、保留中のすべての変更がデータベースに書き込まれるまで)、含まれるエンティティに加えた変更、および追加および削除されたエンティティもキャッシュします。

一部の変更がまだフラッシュされていない場合、セッションはダーティと呼ばれます。したがって、ダーティセッションが発生するのは完全に正常です。トランザクションがコミットされる前に、セッションがフラッシュされます。

于 2012-05-29T18:34:08.733 に答える
7

Hibernateのダーティセッションは、セッション内にオブジェクトをロードしてから変更する場合です。

または、セッションを開いて新しいオブジェクトを作成するとき。

挿入/更新操作を明示的に呼び出さなくても、Hibernateはセッションをダーティとしてマークし、セッションが閉じられたときに変更を保存します

于 2012-05-29T18:33:45.957 に答える
4

簡単に言うと、ダーティデータはまだコミットされていないデータです。同様に、Hibernateのダーティセッションには、まだコミットされていない変更されたデータが含まれています。

于 2016-02-05T09:15:20.400 に答える
2

これは、データベースにまだフラッシュされていない、メモリ内の管理された永続オブジェクトに変更を加えたことを意味します。

基本的に、Hibernateの背後にある考え方は、メモリ内の永続オブジェクト状態がアプリケーションの状態であるということです。管理対象オブジェクトに変更を加えると、hibernateは次の機会にそれをデータベースに配置します。永続化する予定のない管理対象オブジェクトに「一時的な」変更を加えないでください。永続化されるためです。

クエリを実行する前に、hibernateはすべての管理対象オブジェクトのメモリ内の状態をデータベースにフラッシュします。これにより、クエリはアプリケーションの状態に対して正確になります。

于 2012-05-29T18:33:30.830 に答える