/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* Copyright (c) 2008-2011, Red Hat Inc. or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Red Hat Inc.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package org.hibernate.cache.spi;
import java.util.Map;
import org.hibernate.cache.CacheException;
Defines a contract for accessing a particular named region within the
underlying cache implementation.
Author: Steve Ebersole
/**
* Defines a contract for accessing a particular named region within the
* underlying cache implementation.
*
* @author Steve Ebersole
*/
public interface Region {
Retrieve the name of this region.
Returns: The region name
/**
* Retrieve the name of this region.
*
* @return The region name
*/
public String getName();
The "end state" contract of the region's lifecycle. Called during SessionFactory.close()
to give the region a chance to cleanup. Throws: - CacheException – Indicates problem shutting down
/**
* The "end state" contract of the region's lifecycle. Called
* during {@link org.hibernate.SessionFactory#close()} to give
* the region a chance to cleanup.
*
* @throws org.hibernate.cache.CacheException Indicates problem shutting down
*/
public void destroy() throws CacheException;
Determine whether this region contains data for the given key.
The semantic here is whether the cache contains data visible for the
current call context. This should be viewed as a "best effort", meaning
blocking should be avoid if possible.
Params: - key – The cache key
Returns: True if the underlying cache contains corresponding data; false
otherwise.
/**
* Determine whether this region contains data for the given key.
* <p/>
* The semantic here is whether the cache contains data visible for the
* current call context. This should be viewed as a "best effort", meaning
* blocking should be avoid if possible.
*
* @param key The cache key
*
* @return True if the underlying cache contains corresponding data; false
* otherwise.
*/
public boolean contains(Object key);
The number of bytes is this cache region currently consuming in memory.
Returns: The number of bytes consumed by this region; -1 if unknown or
unsupported.
/**
* The number of bytes is this cache region currently consuming in memory.
*
* @return The number of bytes consumed by this region; -1 if unknown or
* unsupported.
*/
public long getSizeInMemory();
The count of entries currently contained in the regions in-memory store.
Returns: The count of entries in memory; -1 if unknown or unsupported.
/**
* The count of entries currently contained in the regions in-memory store.
*
* @return The count of entries in memory; -1 if unknown or unsupported.
*/
public long getElementCountInMemory();
The count of entries currently contained in the regions disk store.
Returns: The count of entries on disk; -1 if unknown or unsupported.
/**
* The count of entries currently contained in the regions disk store.
*
* @return The count of entries on disk; -1 if unknown or unsupported.
*/
public long getElementCountOnDisk();
Get the contents of this region as a map.
Implementors which do not support this notion
should simply return an empty map.
Returns: The content map.
/**
* Get the contents of this region as a map.
* <p/>
* Implementors which do not support this notion
* should simply return an empty map.
*
* @return The content map.
*/
public Map toMap();
Get the next timestamp according to the underlying cache implementor.
@todo Document the usages of this method so providers know exactly what is expected. Returns: The next timestamp
/**
* Get the next timestamp according to the underlying cache implementor.
*
* @todo Document the usages of this method so providers know exactly what is expected.
*
* @return The next timestamp
*/
public long nextTimestamp();
Get a timeout value.
@todo Again, document the usages of this method so providers know exactly what is expected. Returns: The time out value
/**
* Get a timeout value.
*
* @todo Again, document the usages of this method so providers know exactly what is expected.
*
* @return The time out value
*/
public int getTimeout();
}