/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later
 * See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
 */
package org.hibernate.cache.spi;

import java.util.Map;

import org.hibernate.boot.spi.SessionFactoryOptions;
import org.hibernate.cache.CacheException;
import org.hibernate.cache.cfg.spi.DomainDataRegionBuildingContext;
import org.hibernate.cache.cfg.spi.DomainDataRegionConfig;
import org.hibernate.cache.spi.access.AccessType;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.service.Service;
import org.hibernate.service.spi.Stoppable;

Contract for building second level cache regions.

Implementors should define a constructor in one of two forms:
  • MyRegionFactoryImpl(Properties)
  • MyRegionFactoryImpl()
Use the first when we need to read config properties prior to start being called.
Author:Steve Ebersole
/** * Contract for building second level cache regions. * <p/> * Implementors should define a constructor in one of two forms:<ul> * <li>MyRegionFactoryImpl({@link java.util.Properties})</li> * <li>MyRegionFactoryImpl()</li> * </ul> * Use the first when we need to read config properties prior to * {@link #start} being called. * * @author Steve Ebersole */
public interface RegionFactory extends Service, Stoppable {
Lifecycle callback to perform any necessary initialization of the underlying cache provider. Called exactly once during the construction of a SessionFactoryImpl.
Params:
  • settings – The settings in effect.
  • configValues – The available config values
Throws:
/** * Lifecycle callback to perform any necessary initialization of the * underlying cache provider. Called exactly once during the * construction of a {@link org.hibernate.internal.SessionFactoryImpl}. * * @param settings The settings in effect. * @param configValues The available config values * * @throws org.hibernate.cache.CacheException Indicates problems starting the L2 cache impl; * considered as a sign to stop {@link org.hibernate.SessionFactory} * building. */
void start(SessionFactoryOptions settings, Map configValues) throws CacheException;
By default should we perform "minimal puts" when using this second level cache implementation?
Returns:True if "minimal puts" should be performed by default; false otherwise.
/** * By default should we perform "minimal puts" when using this second * level cache implementation? * * @return True if "minimal puts" should be performed by default; false * otherwise. */
boolean isMinimalPutsEnabledByDefault();
Get the default access type for any "user model" data
/** * Get the default access type for any "user model" data */
AccessType getDefaultAccessType(); String qualify(String regionName); default CacheTransactionSynchronization createTransactionContext(SharedSessionContractImplementor session) { return new StandardCacheTransactionSynchronization( this ); }
Generate a timestamp. This value is generally used for purpose of locking/unlocking cache content depending upon the access-strategy being used. The intended consumer of this method is the Session to manage its SharedSessionContractImplementor.getTransactionStartTimestamp value. It is also expected that this be the value used for this's RegionFactory's CacheTransactionContext
API Note:This "timestamp" need not be related to timestamp in the Java Date/millisecond sense. It just needs to be an incrementing value
/** * Generate a timestamp. This value is generally used for purpose of * locking/unlocking cache content depending upon the access-strategy being * used. The intended consumer of this method is the Session to manage * its {@link SharedSessionContractImplementor#getTransactionStartTimestamp} value. * * It is also expected that this be the value used for this's RegionFactory's * CacheTransactionContext * * @apiNote This "timestamp" need not be related to timestamp in the Java Date/millisecond * sense. It just needs to be an incrementing value */
long nextTimestamp(); default long getTimeout() { // most existing providers defined this as 60 seconds. return 60000; }
Create a named Region for holding domain model data
Params:
  • regionConfig – The user requested caching configuration for this Region
  • buildingContext – Access to delegates useful in building the Region
/** * 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); QueryResultsRegion buildQueryResultsRegion(String regionName, SessionFactoryImplementor sessionFactory); TimestampsRegion buildTimestampsRegion(String regionName, SessionFactoryImplementor sessionFactory); }