## org.hibernate.cache
Interface RegionFactory

All Known Implementing Classes:
  DelegatingRegionFactory, EhCacheRegionFactory, InfinispanRegionFactory, JndiInfinispanRegionFactory, NoCachingRegionFactory, RegionFactoryCacheProviderBridge, SingletonEhCacheRegionFactory

    public interface RegionFactory

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(org.hibernate.cfg.Settings, java.util.Properties)` being called. For an example, have a look at `RegionFactoryCacheProviderBridge` where we need the properties in order to determine which legacy `CacheProvider` to use so that we can answer the `isMinimalPutsEnabledByDefault()` question for the `SettingsFactory`.

Author:
  Steve Ebersole

Method Summary
`CollectionRegion` `buildCollectionRegion(String regionName, Properties properties, CacheDataDescription metadata)` Build a cache region specialized for storing collection data.
`EntityRegion` `buildEntityRegion(String regionName, Properties properties, CacheDataDescription metadata)` Build a cache region specialized for storing entity data.
`QueryResultsRegion` `buildQueryResultsRegion(String regionName, Properties properties)` Build a cache region specialized for storing query results
`TimestampsRegion` `buildTimestampsRegion(String regionName, Properties properties)` Build a cache region specialized for storing update-timestamps data.
`AccessType` `getDefaultAccessType()` Get the default access type for `entity` and `collection` regions.
`boolean` `isMinimalPutsEnabledByDefault()` By default should we perform "minimal puts" when using this second level cache implementation?
`long` `nextTimestamp()` Generate a timestamp.
`void` `start(Settings settings, Properties properties)` Lifecycle callback to perform any necessary initialization of the underlying cache implementation(s).
`void` `stop()` Lifecycle callback to perform any necessary cleanup of the underlying cache implementation(s).

Method Detail

### start

    void start(Settings settings,
               Properties properties)
               throws CacheException

  Lifecycle callback to perform any necessary initialization of the underlying cache implementation(s). Called exactly once during the construction of a `SessionFactoryImpl`.

  Parameters:
    `settings` - The settings in effect.
    `properties` - The defined cfg properties
  Throws:
    `CacheException` - Indicates problems starting the L2 cache impl; considered as a sign to stop `SessionFactory` building.

### stop

    void stop()

  Lifecycle callback to perform any necessary cleanup of the underlying cache implementation(s). Called exactly once during `SessionFactory.close()`.

### isMinimalPutsEnabledByDefault

    boolean isMinimalPutsEnabledByDefault()

  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.

### getDefaultAccessType

    AccessType getDefaultAccessType()

  Get the default access type for `entity` and `collection` regions.

  Returns:
    This factory's default access type.

### nextTimestamp

    long nextTimestamp()

  Generate a timestamp.

  This is generally used for cache content locking/unlocking purposes depending upon the access-strategy being used.

  Returns:
    The generated timestamp.

### buildEntityRegion

    EntityRegion buildEntityRegion(String regionName,
                                   Properties properties,
                                   CacheDataDescription metadata)
                                   throws CacheException

  Build a cache region specialized for storing entity data.

  Parameters:
    `regionName` - The name of the region.
    `properties` - Configuration properties.
    `metadata` - Information regarding the type of data to be cached
  Returns:
    The built region
  Throws:
    `CacheException` - Indicates problems building the region.

### buildCollectionRegion

    CollectionRegion buildCollectionRegion(String regionName,
                                           Properties properties,
                                           CacheDataDescription metadata)
                                           throws CacheException

  Build a cache region specialized for storing collection data.

  Parameters:
    `regionName` - The name of the region.
    `properties` - Configuration properties.
    `metadata` - Information regarding the type of data to be cached
  Returns:
    The built region
  Throws:
    `CacheException` - Indicates problems building the region.

### buildQueryResultsRegion

    QueryResultsRegion buildQueryResultsRegion(String regionName,
                                               Properties properties)
                                               throws CacheException

  Build a cache region specialized for storing query results

  Parameters:
    `regionName` - The name of the region.
    `properties` - Configuration properties.
  Returns:
    The built region
  Throws:
    `CacheException` - Indicates problems building the region.

### buildTimestampsRegion

    TimestampsRegion buildTimestampsRegion(String regionName,
                                           Properties properties)
                                           throws CacheException

  Build a cache region specialized for storing update-timestamps data.

  Parameters:
    `regionName` - The name of the region.
    `properties` - Configuration properties.
  Returns:
    The built region
  Throws:
    `CacheException` - Indicates problems building the region.

Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.