Class CacheInvalidationPolicy

java.lang.Object
org.eclipse.persistence.descriptors.invalidation.CacheInvalidationPolicy
All Implemented Interfaces:
Serializable, Cloneable
Direct Known Subclasses:
DailyCacheInvalidationPolicy, NoExpiryCacheInvalidationPolicy, TimeToLiveCacheInvalidationPolicy

public abstract class CacheInvalidationPolicy extends Object implements Serializable, Cloneable
PUBLIC: A CacheInvalidationPolicy is used to set objects in TopLink's identity maps to be invalid following given rules. CacheInvalidationPolicy is the abstract superclass for all policies used for cache invalidation. By default in EclipseLink, objects do not expire in the cache. Several different policies are available to allow objects to expire. These can be set on the ClassDescriptor.
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected boolean
    Allows the timeToLive to be randomized to avoid bottlenecks.
    static final long
     
    protected Random
    Random used for randomized invalidation.
    protected boolean
    Determines if expired object registered in the unit of work should be refreshed, default true.
    protected boolean
    This will represent objects that do not expire.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
     
    abstract long
    getExpiryTimeInMillis(org.eclipse.persistence.internal.identitymaps.CacheKey key)
    INTERNAL: Get the next time when this object will become invalid
    long
    getRemainingValidTime(org.eclipse.persistence.internal.identitymaps.CacheKey key)
    INTERNAL: Return the remaining life of this object
    void
    initialize(ClassDescriptor descriptor, org.eclipse.persistence.internal.sessions.AbstractSession session)
    INTERNAL: Allow initialization with the descriptor.
    boolean
    isInvalidated(org.eclipse.persistence.internal.identitymaps.CacheKey key)
    INTERNAL: return true if this object is expire, false otherwise.
    abstract boolean
    isInvalidated(org.eclipse.persistence.internal.identitymaps.CacheKey key, long currentTimeMillis)
    INTERNAL: return true if this object is expire, false otherwise.
    boolean
    PUBLIC: Allows the timeToLive to be randomized to avoid bottlenecks.
    void
    setIsInvalidationRandomized(boolean isInvalidationRandomized)
    PUBLIC: Allows the timeToLive to be randomized to avoid bottlenecks.
    void
    setShouldRefreshInvalidObjectsOnClone(boolean shouldRefreshInvalidObjectsOnClone)
    PUBLIC: Set if expired object should be refreshed prior to cloning, default is true.
    void
    setShouldUpdateReadTimeOnUpdate(boolean shouldUpdateReadTime)
    PUBLIC: Set whether to update the stored time an object was read when an object is updated.
    boolean
    PUBLIC: Return if expired object should be refreshed prior to cloning.
    boolean
    PUBLIC: Return whether objects affected by this CacheInvalidationPolicy should have the read time on their cache keys updated when an update occurs.

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • NO_EXPIRY

      public static final long NO_EXPIRY
      See Also:
    • shouldUpdateReadTimeOnUpdate

      protected boolean shouldUpdateReadTimeOnUpdate
      This will represent objects that do not expire.
    • shouldRefreshInvalidObjectsOnClone

      protected boolean shouldRefreshInvalidObjectsOnClone
      Determines if expired object registered in the unit of work should be refreshed, default true.
    • isInvalidationRandomized

      protected boolean isInvalidationRandomized
      Allows the timeToLive to be randomized to avoid bottlenecks.
    • random

      protected Random random
      Random used for randomized invalidation.
  • Constructor Details

    • CacheInvalidationPolicy

      public CacheInvalidationPolicy()
  • Method Details

    • isInvalidationRandomized

      public boolean isInvalidationRandomized()
      PUBLIC: Allows the timeToLive to be randomized to avoid bottlenecks.
    • setIsInvalidationRandomized

      public void setIsInvalidationRandomized(boolean isInvalidationRandomized)
      PUBLIC: Allows the timeToLive to be randomized to avoid bottlenecks.
    • getExpiryTimeInMillis

      public abstract long getExpiryTimeInMillis(org.eclipse.persistence.internal.identitymaps.CacheKey key)
      INTERNAL: Get the next time when this object will become invalid
    • getRemainingValidTime

      public long getRemainingValidTime(org.eclipse.persistence.internal.identitymaps.CacheKey key)
      INTERNAL: Return the remaining life of this object
    • initialize

      public void initialize(ClassDescriptor descriptor, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Allow initialization with the descriptor.
    • isInvalidated

      public boolean isInvalidated(org.eclipse.persistence.internal.identitymaps.CacheKey key)
      INTERNAL: return true if this object is expire, false otherwise.
    • isInvalidated

      public abstract boolean isInvalidated(org.eclipse.persistence.internal.identitymaps.CacheKey key, long currentTimeMillis)
      INTERNAL: return true if this object is expire, false otherwise.
    • setShouldUpdateReadTimeOnUpdate

      public void setShouldUpdateReadTimeOnUpdate(boolean shouldUpdateReadTime)
      PUBLIC: Set whether to update the stored time an object was read when an object is updated. When the read time is updated, it indicates to EclipseLink that the data in the object is up to date. This means that cache invalidation checks will occur relative to the new read time. By default, the read time will not be updated when an object is updated. Often it is possible to be confident that the object is up to date after an update because otherwise the update will fail because of the locking policies in use.
    • shouldUpdateReadTimeOnUpdate

      public boolean shouldUpdateReadTimeOnUpdate()
      PUBLIC: Return whether objects affected by this CacheInvalidationPolicy should have the read time on their cache keys updated when an update occurs.
    • setShouldRefreshInvalidObjectsOnClone

      public void setShouldRefreshInvalidObjectsOnClone(boolean shouldRefreshInvalidObjectsOnClone)
      PUBLIC: Set if expired object should be refreshed prior to cloning, default is true. Applies to Protected Entities and UnitOfWork registration.
    • shouldRefreshInvalidObjectsOnClone

      public boolean shouldRefreshInvalidObjectsOnClone()
      PUBLIC: Return if expired object should be refreshed prior to cloning. Applies to Protected Entities and UnitOfWork registration.
    • clone

      public Object clone()
      Overrides:
      clone in class Object