Bean IUD の無効化
永続化された Bean に対するキャッシュの無効化が自動的に提供されます。キャッシュの無効化は Bean のタイプと ID 値によって処理されます。
クラスタメッセージ
クラスタを通じて送信されるメッセージには、Bean のタイプと ID の 3 つのリストが含まれています。挿入、更新、削除された Bean の ID 値のリストです。
L2 クエリキャッシュ
挿入、更新、または削除:Bean タイプ全体の L2 クエリキャッシュを無効化します
Bean 永続化イベントでは、関連する Bean タイプの関連する L2 クエリキャッシュ全体が無効になります。たとえば、CustomerBean を保存すると、Customer Bean タイプの L2 クエリキャッシュ全体が無効になります。
L2 Bean キャッシュ
挿入:L2 Bean キャッシュには影響を与えません更新:エントリは変更によって更新されます削除:エントリは ID 値に基づいて L2 Bean キャッシュから削除されます
Table IUD の無効化 (一括更新)
一括挿入、更新、または削除イベントはテーブルによって処理されます。特定のテーブルの、そのテーブルに依存する Bean タイプが決定され、各 Bean タイプに対して L2 Bean キャッシュと L2 クエリキャッシュが無効化されます(必要に応じて)。
クラスタメッセージ
クラスタを通じて送信されるメッセージには、テーブル名と挿入、更新、削除に対するブールフラグが含まれています。
L2 クエリキャッシュ
挿入、更新、または削除:関連する Bean タイプの L2 クエリキャッシュ全体が無効化される
一括ステートメント(一括テーブルの挿入、更新、削除ステートメント)の場合は、関連付けられた Bean タイプに対応する L2 クエリキャッシュがすべて無効になります。たとえば、customer テーブルの一括更新では Customer Bean タイプの L2 クエリキャッシュ全体が無効になります。
L2 Bean キャッシュ
挿入:L2 Bean キャッシュには影響を与えません更新:関連する Bean タイプの L2 Bean キャッシュ全体を無効にします削除:関連する Bean タイプの L2 Bean キャッシュ全体を無効にします
明示的な無効化
アプリケーションコードを使用して明示的な無効化を実行できます。これは Ebean の外部でデータが変更された場合に行います。たとえば、他のフレームワーク、JDBC コードなどでデータが更新された場合などです。このような場合は L2 キャッシュの一部を明示的に無効にする必要があります。
externalModification() の使用
// inform Ebean that some rows have been inserted and updated
// on the country table.
// ... Ebean will invalidate the appropriate caches
boolean inserts = true;
boolean updates = true;
boolean deletes = false;
DB.externalModification("country", inserts, updates, deletes);
ServerCacheManager の使用
ServerCacheManager はキャッシュをクリアするための明示的な API も提供します。
// clearAll() caches via the ServerCacheManager ...
ServerCacheManager cacheManager = database.cacheManager();
// Clear all the caches on the default/primary EbeanServer
cacheManager.clearAll();
// clear both the bean and query cache
// for Country beans ...
cacheManager.clear(Country.class);