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);