org.apache.cayenne.cache
Class EhCacheQueryCache

java.lang.Object
  extended by org.apache.cayenne.cache.EhCacheQueryCache
All Implemented Interfaces:
QueryCache

public class EhCacheQueryCache
extends java.lang.Object
implements QueryCache


Field Summary
protected  CacheManager cacheManager
           
 
Constructor Summary
EhCacheQueryCache()
           
EhCacheQueryCache(java.lang.String configFile)
           
 
Method Summary
 void clear()
          Clears all cache entries.
 java.util.List get(QueryMetadata metadata)
          Returns a cached query result for the given QueryMetadata or null if the result is not cached or is expired.
 java.util.List get(QueryMetadata metadata, QueryCacheEntryFactory factory)
          Returns a cached query result for the given QueryMetadata.
 Ehcache getDefaultCache()
          Returns default cache group.
 void put(QueryMetadata metadata, java.util.List results)
           
 void remove(java.lang.String key)
          Removes a single entry from cache.
 void removeGroup(java.lang.String groupKey)
          Removes a group of entries identified by group key.
 void shutdown()
          Shuts down EhCache CacheManager
 int size()
          Returns the number of entries currently in the cache, including expired but not removed entries.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cacheManager

protected CacheManager cacheManager
Constructor Detail

EhCacheQueryCache

public EhCacheQueryCache()

EhCacheQueryCache

public EhCacheQueryCache(java.lang.String configFile)
Method Detail

get

public java.util.List get(QueryMetadata metadata)
Description copied from interface: QueryCache
Returns a cached query result for the given QueryMetadata or null if the result is not cached or is expired.

Specified by:
get in interface QueryCache

get

public java.util.List get(QueryMetadata metadata,
                          QueryCacheEntryFactory factory)
Description copied from interface: QueryCache
Returns a cached query result for the given QueryMetadata. If the result is not cached or is expired, cache will use provided factory to rebuild the value and store it in the cache. A corollary is that this method never returns null.

Compared to QueryCache.get(QueryMetadata), this method allows the cache to do appropriate synchronization when refreshing the entry, preventing multiple threads from running the same query when a missing entry is requested by multiple threads simultaneously.

Specified by:
get in interface QueryCache

put

public void put(QueryMetadata metadata,
                java.util.List results)
Specified by:
put in interface QueryCache

remove

public void remove(java.lang.String key)
Description copied from interface: QueryCache
Removes a single entry from cache.

Specified by:
remove in interface QueryCache

removeGroup

public void removeGroup(java.lang.String groupKey)
Description copied from interface: QueryCache
Removes a group of entries identified by group key. Note that depending on implementation this method may either actively remove the entries belonging to the group or just mark them as expired, so that they are refreshed on the next access. In the former case the cache size would shrink, but in the later the cache size will not change after calling this method.

Specified by:
removeGroup in interface QueryCache

clear

public void clear()
Description copied from interface: QueryCache
Clears all cache entries.

Specified by:
clear in interface QueryCache

size

public int size()
Description copied from interface: QueryCache
Returns the number of entries currently in the cache, including expired but not removed entries.

Specified by:
size in interface QueryCache

getDefaultCache

public Ehcache getDefaultCache()
Returns default cache group.


shutdown

@BeforeScopeEnd
public void shutdown()
Shuts down EhCache CacheManager



Copyright © 2001-2012 Apache Cayenne. All Rights Reserved.