hibernate二级缓存(二)二级缓存实现原理简单剖析
在前面我们将过hibernate二级缓存类似于一个插件,将缓存的具体实现分离,缓存的具体实现是通过hibernate.cache.region.factory_class参数配置指定。本文只是对hibernate二级缓存的部分接口进行简单的解析,大致了解二级缓存的整体结构,二级缓存的内部实现很复杂,如要深究请阅读hibernate源码。
1. hibernate二级缓存结构
hibernate二级缓存涉及到如下几个重要的接口:
- RegionFactory
- DomainDataRegion
- EntityDataAccess
- StorageAccess
1.1 RegionFactory获取缓存的工厂,RegionFactory有如下几个重要的方法:
public interface RegionFactory extends Service, Stoppable {
//初始化方法
void start(SessionFactoryOptions settings, Map configValues) throws CacheException;
boolean isMinimalPutsEnabledByDefault();
//缓存策略
AccessType getDefaultAccessType();
String qualify(String regionName);
default CacheTransactionSynchronization createTransactionContext(SharedSessionContractImplementor session) {
return new StandardCacheTransactionSynchronization( this );
}
long nextTimestamp();
default long getTimeout() {
// most existing providers defined this as 60 seconds.
return 60000;
}
DomainDataRegion buildDomainDataRegion(
DomainDataRegionConfig regionConfig,
DomainDataRegionBuildingContext buildingContext);
QueryResultsRegion buildQueryResultsRegion(String regionName, SessionFactoryImplementor sessionFactory);