首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Hibernate 3.3 全新快取架構:RegionFactory 取代 CacheProvider

     編輯:Java 相關知識

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

關鍵改進

  1. 專用區域類型:Entity/Collection/Query/Timestamp 各自介面,語義清晰
  2. 查詢快取區域化:buildQueryResultsRegion 允許為特定查詢指定獨立快取區域與過期策略
  3. 存取策略下放:區域物件自行建立 EntityRegionAccessStrategy/CollectionRegionAccessStrategy,支援非阻塞/異步快取
  4. 生命週期分離:start/stop 統一管理底層快取庫 (Ehcache/Infinispan/Redis) 初始化與關閉

遷移指引

  • 自訂 CacheProvider 需改實作 RegionFactory
  • 配置屬性 hibernate.cache.region.factory_class 指定實作類
  • 舊 hibernate.cache.provider_class 標記 @Deprecated 但暫時相容

這是 Hibernate 快取架構邁向模組化、雲原生的關鍵一步,為分散式快取 (Redis Cluster 等) 整合鋪路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved