Class NestedQueryCache

  • All Implemented Interfaces:
    QueryCache

    public class NestedQueryCache
    extends Object
    implements QueryCache
    A QueryCache 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
    • 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.
      • 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 interface QueryCache
      • 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 interface QueryCache
      • remove

        public void remove​(String key)
        Removes an entry for key in the current namespace.
        Specified by:
        remove in interface QueryCache
      • removeGroup

        public void removeGroup​(String groupKey)
        Invalidates a shared cache group.
        Specified by:
        removeGroup in interface QueryCache