Bean IUD 失效
为持久化 Bean 自动提供缓存失效。缓存失效按 Bean 类型和 ID 值处理。
集群消息
在集群中发送的消息包含 Bean 类型和 3 个 ID 列表 - 插入、更新和删除 Bean 的 ID 值列表。
二级查询缓存
插入、更新或删除:
使 Bean 类型的整个二级查询缓存失效
对于任何 Bean 持久化事件,都会使关联 Bean 类型相关的整个二级查询缓存失效。例如,保存客户 Bean 会使 Customer Bean 类型的整个二级查询缓存失效。
二级 Bean 缓存
插入:
不影响二级 Bean 缓存更新:
用更改更新条目删除:
根据 ID 值从二级 Bean 缓存中删除条目
表 IUD 失效(批量更新)
批量插入、更新或删除事件按表处理。对于给定的表,确定依赖于该表的 Bean 类型,然后针对每个 Bean 类型,根据需要使二级 Bean 缓存和二级查询缓存失效。
集群消息
在集群中发送的消息包含表名称以及用于插入、更新和删除的布尔标志。
二级查询缓存
插入、更新或删除:
使与相关 bean 类型关联的整个 L2 查询缓存无效
对于任何批量语句(批量表插入、更新或删除语句),与关联 bean 类型关联的整个 L2 查询缓存都会失效。例如,对 customer 表进行批量更新会使 Customer bean 类型的整个 L2 查询缓存失效。
二级 Bean 缓存
插入:
不影响二级 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);