Package org.apache.cayenne.cache
Class NestedQueryCache
- java.lang.Object
-
- org.apache.cayenne.cache.NestedQueryCache
-
- All Implemented Interfaces:
QueryCache
public class NestedQueryCache extends Object implements QueryCache
AQueryCache
wrapper that introduces a key namespace on top of a delegate shared cache. This way multiple cache users can share the same underlying cache without a possibility of key conflicts, yet refresh the cache groups in a coordinated fashion.- Since:
- 3.0
-
-
Field Summary
Fields Modifier and Type Field Description protected QueryCache
delegate
protected String
namespace
-
Constructor Summary
Constructors Constructor Description NestedQueryCache(QueryCache delegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
clear()
Deprecated.since 4.0List
get(QueryMetadata metadata)
Returns a cached query result for the given QueryMetadata or null if the result is not cached or is expired.List
get(QueryMetadata metadata, QueryCacheEntryFactory factory)
Returns a cached query result for the given QueryMetadata.QueryCache
getDelegate()
Returns the actual implementation of the query cache that is wrapped by this NestedQueryCache.void
put(QueryMetadata metadata, List results)
void
remove(String key)
Removes an entry for key in the current namespace.void
removeGroup(String groupKey)
Invalidates a shared cache group.void
removeGroup(String groupKey, Class<?> keyType, Class<?> valueType)
Removes a group of entries identified by group key.
-
-
-
Field Detail
-
delegate
protected QueryCache delegate
-
namespace
protected String namespace
-
-
Constructor Detail
-
NestedQueryCache
public NestedQueryCache(QueryCache delegate)
-
-
Method Detail
-
getDelegate
public QueryCache getDelegate()
Returns the actual implementation of the query cache that is wrapped by this NestedQueryCache.
-
clear
@Deprecated public void clear()
Deprecated.since 4.0Clears the underlying shared cache.- Specified by:
clear
in interfaceQueryCache
- See Also:
QueryCache.clear()
-
get
public 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 interfaceQueryCache
-
get
public 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 interfaceQueryCache
-
put
public void put(QueryMetadata metadata, List results)
- Specified by:
put
in interfaceQueryCache
-
remove
public void remove(String key)
Removes an entry for key in the current namespace.- Specified by:
remove
in interfaceQueryCache
-
removeGroup
public void removeGroup(String groupKey)
Invalidates a shared cache group.- Specified by:
removeGroup
in interfaceQueryCache
-
removeGroup
public void removeGroup(String groupKey, Class<?> keyType, Class<?> valueType)
Description copied from interface:QueryCache
Removes a group of entries identified by group key. Can be used if cache provider supports strictly typed caches.- Specified by:
removeGroup
in interfaceQueryCache
- See Also:
QueryCache.removeGroup(String)
-
-