Hibernate 3.3 重構二級快取與查詢快取 SPI,引入 RegionFactory 替代舊有 CacheProvider,支援更細粒度的快取區域控制。
CacheProvider 單一介面職責過重public interface RegionFactory {
void start(Settings settings, Properties properties);
void stop();
boolean isMinimalPutsEnabledByDefault();
long nextTimestamp();
EntityRegion buildEntityRegion(String name, Properties props, CacheDataDescription meta);
CollectionRegion buildCollectionRegion(String name, Properties props, CacheDataDescription meta);
QueryResultsRegion buildQueryResultsRegion(String name, Properties props); // 關鍵:查詢快取自訂區域
TimestampsRegion buildTimestampsRegion(String name, Properties props);
}
buildQueryResultsRegion 允許為特定查詢指定獨立快取區域與過期策略EntityRegionAccessStrategy/CollectionRegionAccessStrategy,支援非阻塞/異步快取start/stop 統一管理底層快取庫 (Ehcache/Infinispan/Redis) 初始化與關閉CacheProvider 需改實作 RegionFactoryhibernate.cache.region.factory_class 指定實作類hibernate.cache.provider_class 標記 @Deprecated 但暫時相容這是 Hibernate 快取架構邁向模組化、雲原生的關鍵一步,為分散式快取 (Redis Cluster 等) 整合鋪路。