Interface QueryCache

All Superinterfaces:
Closeable, TypesChangedListener
All Known Implementing Classes:
AbstractQueryCache, ConcurrentQueryCache, DelegatingQueryCache

public interface QueryCache extends TypesChangedListener, Closeable
Interface that must be implemented by any level 2 query cache used by OpenJPA. These methods should be threadsafe. Most query cache implementations will probably implement Configurable to receive a handle to the system configuration on construction.
Since:
0.2.5
Author:
Patrick Linskey
  • Method Details

    • initialize

      void initialize(DataCacheManager manager)
      Initialize any resources associated with the given DataCacheManager.
      Since:
      0.4.1
    • get

      Return a list of oids for the given query key. This is an unmodifiable list.
      Returns:
      The query results matching the given key, or null if none
    • put

      Set the list of OIDs for the given query key. A reference to the given list will be stored in the query cache, so the list should not be modified after invoking this method.
      Returns:
      The previously cached value, or null if the key was not previously cached. See Map.put(K, V) for more information.
    • remove

      QueryResult remove(QueryKey qk)
      Remove the value stored under the given query key. This method is typically not invoked directly from outside the QueryCache class. Instead, the cache should be updated by implementing RemoteCommitListener, which will result in all queries that may be invalid being dropped.
      Returns:
      The previously cached value, or null if the key was not previously cached. See Map.remove(java.lang.Object) for more information.
    • clear

      void clear()
      Remove all data from this cache.
    • pin

      boolean pin(QueryKey qk)
      Pin the value stored under qk into the cache. This method guarantees that qk's value will not be expired if the cache exceeds its capacity. It causes this data to be ignored when determining whether or not the cache is full, effectively increasing the total amount of data stored in the cache. This method does not affect the behavior of remove(org.apache.openjpa.datacache.QueryKey) or TypesChangedListener.onTypesChanged(org.apache.openjpa.datacache.TypesChangedEvent).
      Returns:
      true if key's value was pinned into the cache; false if the key is not in the cache.
    • unpin

      boolean unpin(QueryKey qk)
      Unpin the value stored under key into the cache. This method reverses a previous invocation of pin(org.apache.openjpa.datacache.QueryKey). This method does not remove anything from the cache; it merely makes key's value a candidate for flushing from the cache.
      Returns:
      true if key's value was unpinned from the cache; false if the key is not in the cache.
    • writeLock

      void writeLock()
      Obtain a write lock on the cache.
    • writeUnlock

      void writeUnlock()
      Release the write lock on the cache.
    • addTypesChangedListener

      void addTypesChangedListener(TypesChangedListener listen)
      Add a new types event listener to this cache.
      Since:
      0.3.3
    • removeTypesChangedListener

      boolean removeTypesChangedListener(TypesChangedListener listen)
      Remove an types event listener from this cache.
      Since:
      0.3.3
    • close

      void close()
      Free the resources used by this cache.
      Specified by:
      close in interface Closeable
    • getStatistics

      QueryStatistics<QueryKey> getStatistics()
      Gets the simple statistics for query results. If the statistics gathering is disabled, an empty statistics is returned.
      Since:
      2.1.0