Package org.apache.openjpa.datacache
Class ConcurrentQueryCache
java.lang.Object
org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager
org.apache.openjpa.datacache.AbstractQueryCache
org.apache.openjpa.datacache.ConcurrentQueryCache
- All Implemented Interfaces:
Serializable,QueryCache,TypesChangedListener,RemoteCommitListener,Configurable,Closeable,EventManager
A
QueryCache implementation that is optimized for concurrent
access. When the cache fill up, values to remove from the cache are chosen
randomly. Due to race conditions, it is possible that a get call might not
retur a cached instance if that instance is being transferred between
internal datastructures.- Since:
- 0.4.1
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.openjpa.datacache.AbstractQueryCache
AbstractQueryCache.Default<T>, AbstractQueryCache.EvictPolicy -
Field Summary
FieldsFields inherited from class org.apache.openjpa.datacache.AbstractQueryCache
conf, entityTimestampMap, evictPolicy, logFields inherited from class org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager
_listeners -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidClear the cache.Returns the underlyingCacheMapthat this cache is using.intReturns the maximum number of unpinned objects to keep hard references to.Returns the eviction policy of the query cacheprotected QueryResultgetInternal(QueryKey qk) Return the list for the given key.booleangetLru()intReturns the maximum number of unpinned objects to keep soft references to.voidInitialize any resources associated with the givenDataCacheManager.protected CollectionkeySet()Return a threadsafe view of the keys in this cache.protected CacheMapReturn the map to use as an internal cache.protected booleanpinInternal(QueryKey qk) Pin an object to the cache.protected QueryResultputInternal(QueryKey qk, QueryResult result) Add the given result to the cache, returning the old result under the given key.protected QueryResultRemove the result under the given key from the cache.voidsetCacheSize(int size) Sets the maximum number of unpinned objects to keep hard references to.voidsetLru(boolean l) voidsetSoftReferenceSize(int size) Sets the maximum number of unpinned objects to keep soft references to.protected booleanUnpin an object from the cache.voidObtain a write lock on the cache.voidRelease the write lock on the cache.Methods inherited from class org.apache.openjpa.datacache.AbstractQueryCache
addTypesChangedListener, afterCommit, clear, close, close, count, endConfiguration, fireEvent, get, getAllEntityTimestamp, getEnableStatistics, getName, getStatistics, isClosed, newListenerCollection, onTypesChanged, pin, put, remove, removeAllInternal, removeTypesChangedListener, setConfiguration, setEnableStatistics, setEvictPolicy, setName, startConfiguration, unpin, updateEntityTimestampMethods inherited from class org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager
addListener, fireEvent, getListeners, hasListener, hasListeners, isFailFast, removeListener, setFailFastMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.openjpa.event.RemoteCommitListener
afterCommit, close
-
Field Details
-
_lru
protected boolean _lru
-
-
Constructor Details
-
ConcurrentQueryCache
public ConcurrentQueryCache()
-
-
Method Details
-
getCacheMap
Returns the underlyingCacheMapthat this cache is using. This is not an unmodifiable view on the map, so care should be taken with this reference. Implementations should probably not modify the contents of the cache, but should only use this reference to obtain cache metrics. Additionally, this map may contain expired data. Removal of timed-out data is done in a lazy fashion, so the actual size of the map may be greater than the number of non-expired query results in cache. -
getCacheSize
public int getCacheSize()Returns the maximum number of unpinned objects to keep hard references to. -
setCacheSize
public void setCacheSize(int size) Sets the maximum number of unpinned objects to keep hard references to. If the map contains more unpinned objects thansize, then this method will result in the cache flushing old values. -
getSoftReferenceSize
public int getSoftReferenceSize()Returns the maximum number of unpinned objects to keep soft references to. Defaults to-1. -
setSoftReferenceSize
public void setSoftReferenceSize(int size) Sets the maximum number of unpinned objects to keep soft references to. If the map contains more soft references thansize, then this method will result in the cache flushing values. -
initialize
Description copied from interface:QueryCacheInitialize any resources associated with the givenDataCacheManager.- Specified by:
initializein interfaceQueryCache- Overrides:
initializein classAbstractQueryCache
-
writeLock
public void writeLock()Description copied from interface:QueryCacheObtain a write lock on the cache.- Specified by:
writeLockin interfaceQueryCache
-
writeUnlock
public void writeUnlock()Description copied from interface:QueryCacheRelease the write lock on the cache.- Specified by:
writeUnlockin interfaceQueryCache
-
newCacheMap
Return the map to use as an internal cache. -
getInternal
Description copied from class:AbstractQueryCacheReturn the list for the given key.- Specified by:
getInternalin classAbstractQueryCache
-
putInternal
Description copied from class:AbstractQueryCacheAdd the given result to the cache, returning the old result under the given key.- Specified by:
putInternalin classAbstractQueryCache
-
removeInternal
Description copied from class:AbstractQueryCacheRemove the result under the given key from the cache.- Specified by:
removeInternalin classAbstractQueryCache
-
clearInternal
protected void clearInternal()Description copied from class:AbstractQueryCacheClear the cache.- Specified by:
clearInternalin classAbstractQueryCache
-
pinInternal
Description copied from class:AbstractQueryCachePin an object to the cache.- Specified by:
pinInternalin classAbstractQueryCache
-
unpinInternal
Description copied from class:AbstractQueryCacheUnpin an object from the cache.- Specified by:
unpinInternalin classAbstractQueryCache
-
keySet
Description copied from class:AbstractQueryCacheReturn a threadsafe view of the keys in this cache. This collection must be iterable without risk of concurrent modification exceptions. It does not have to implement contains() efficiently or use set semantics.- Specified by:
keySetin classAbstractQueryCache
-
getEvictPolicy
Returns the eviction policy of the query cache- Overrides:
getEvictPolicyin classAbstractQueryCache- Returns:
- -- returns a String value of evictPolicy attribute
-
setLru
public void setLru(boolean l) -
getLru
public boolean getLru()
-