下面列出了怎么用org.hibernate.cache.cfg.spi.DomainDataRegionBuildingContext的API类实例代码及写法,或者点击链接到github查看源代码。
public AbstractDomainDataRegion(
DomainDataRegionConfig regionConfig,
RegionFactory regionFactory,
CacheKeysFactory defaultKeysFactory,
DomainDataRegionBuildingContext buildingContext) {
// super( regionFactory.qualify( regionConfig.getRegionName() ), regionFactory );
super( regionConfig.getRegionName(), regionFactory );
this.sessionFactory = buildingContext.getSessionFactory();
if ( defaultKeysFactory == null ) {
defaultKeysFactory = DefaultCacheKeysFactory.INSTANCE;
}
this.effectiveKeysFactory = buildingContext.getEnforcedCacheKeysFactory() != null
? buildingContext.getEnforcedCacheKeysFactory()
: defaultKeysFactory;
}
@Override
protected DomainDataStorageAccess createDomainDataStorageAccess(DomainDataRegionConfig regionConfig,
DomainDataRegionBuildingContext buildingContext) {
String defaultKey = null;
if (!regionConfig.getCollectionCaching().isEmpty()) {
defaultKey = COLLECTION_DEF;
} else if (!regionConfig.getEntityCaching().isEmpty()) {
defaultKey = ENTITY_DEF;
} else if (!regionConfig.getNaturalIdCaching().isEmpty()) {
defaultKey = NATURAL_ID_DEF;
} else {
throw new IllegalArgumentException("Unable to determine entity cache type!");
}
RMapCache<Object, Object> mapCache = getCache(regionConfig.getRegionName(), buildingContext.getSessionFactory().getProperties(), defaultKey);
return new RedissonStorage(mapCache, ((Redisson)redisson).getConnectionManager(), buildingContext.getSessionFactory().getProperties(), defaultKey);
}
public DomainDataRegionTemplate(
DomainDataRegionConfig regionConfig,
RegionFactory regionFactory,
DomainDataStorageAccess storageAccess,
CacheKeysFactory defaultKeysFactory,
DomainDataRegionBuildingContext buildingContext) {
super( regionConfig, regionFactory, defaultKeysFactory, buildingContext );
this.storageAccess = storageAccess;
// now the super-type calls will have access to the `DomainDataStorageAccess` reference
completeInstantiation( regionConfig, buildingContext );
}
/**
* Should be called at the end of the subtype's constructor, or at least after the
* `#super(...)` (aka, this type's constructor) call. It's a timing issue - we need access
* to the DomainDataStorageAccess in DomainDataRegionTemplate but in methods initiated
* (atm) from AbstractDomainDataRegion's constructor
*/
protected void completeInstantiation(
DomainDataRegionConfig regionConfig,
DomainDataRegionBuildingContext buildingContext) {
log.tracef( "DomainDataRegion created [%s]; key-factory = %s", regionConfig.getRegionName(), effectiveKeysFactory );
this.entityDataAccessMap = generateEntityDataAccessMap( regionConfig );
this.naturalIdDataAccessMap = generateNaturalIdDataAccessMap( regionConfig );
this.collectionDataAccessMap = generateCollectionDataAccessMap( regionConfig );
}
@SuppressWarnings("WeakerAccess")
public DomainDataRegionImpl(
DomainDataRegionConfig regionConfig,
RegionFactoryTemplate regionFactory,
DomainDataStorageAccess domainDataStorageAccess,
CacheKeysFactory defaultKeysFactory,
DomainDataRegionBuildingContext buildingContext) {
super(
regionConfig,
regionFactory,
domainDataStorageAccess,
defaultKeysFactory,
buildingContext
);
}
@Override
public DomainDataRegion buildDomainDataRegion(
DomainDataRegionConfig regionConfig,
DomainDataRegionBuildingContext buildingContext) {
verifyStarted();
return new DomainDataRegionTemplate(
regionConfig,
this,
createDomainDataStorageAccess( regionConfig, buildingContext ),
getImplicitCacheKeysFactory(),
buildingContext
);
}
/** {@inheritDoc} */
@Override public DomainDataRegion buildDomainDataRegion(
DomainDataRegionConfig regionCfg,
DomainDataRegionBuildingContext buildingCtx) {
return new IgniteDomainDataRegion(regionCfg, this, null, buildingCtx,
accessStgyFactory);
}
/** */
public IgniteDomainDataRegion(DomainDataRegionConfig regionCfg,
RegionFactory regionFactory,
CacheKeysFactory defKeysFactory,
DomainDataRegionBuildingContext buildingCtx,
HibernateAccessStrategyFactory stgyFactory) {
super(regionCfg, regionFactory, defKeysFactory, buildingCtx);
this.stgyFactory = stgyFactory;
cache = stgyFactory.regionCache(getName());
completeInstantiation(regionCfg, buildingCtx);
}
@Override
public DomainDataRegion buildDomainDataRegion(
DomainDataRegionConfig regionConfig,
DomainDataRegionBuildingContext buildingContext) {
verifyStarted();
return new DomainDataRegionImpl(
regionConfig,
this,
createDomainDataStorageAccess( regionConfig, buildingContext ),
getImplicitCacheKeysFactory(),
buildingContext
);
}
protected DomainDataStorageAccess createDomainDataStorageAccess(
DomainDataRegionConfig regionConfig,
DomainDataRegionBuildingContext buildingContext) {
throw new UnsupportedOperationException( "Not implemented by caching provider" );
}
@Override
public DomainDataRegion buildDomainDataRegion(
DomainDataRegionConfig regionConfig, DomainDataRegionBuildingContext buildingContext) {
throw new NoCacheRegionFactoryAvailableException();
}
@Override
public DomainDataRegion buildDomainDataRegion(DomainDataRegionConfig regionConfig, DomainDataRegionBuildingContext buildingContext) {
return new DomainDataRegionImpl(regionConfig, this, createDomainDataStorageAccess(regionConfig, buildingContext), cacheKeysFactory, buildingContext);
}
@Override
protected DomainDataStorageAccess createDomainDataStorageAccess(DomainDataRegionConfig regionConfig, DomainDataRegionBuildingContext buildingContext) {
return new StorageAccessImpl(getOrCreateCache(regionConfig.getRegionName(), buildingContext.getSessionFactory()));
}
/**
* Create a named Region for holding domain model data
*
* @param regionConfig The user requested caching configuration for this Region
* @param buildingContext Access to delegates useful in building the Region
*/
DomainDataRegion buildDomainDataRegion(
DomainDataRegionConfig regionConfig,
DomainDataRegionBuildingContext buildingContext);