Interface FetchConfiguration

All Superinterfaces:
Cloneable, LockLevels, LockScopes, QueryFlushModes, Serializable
All Known Subinterfaces:
JDBCFetchConfiguration
All Known Implementing Classes:
DelegatingFetchConfiguration, DelegatingJDBCFetchConfiguration, FetchConfigurationImpl, JDBCFetchConfigurationImpl, TargetFetchConfiguration

public interface FetchConfiguration extends Serializable, Cloneable, LockLevels, LockScopes, QueryFlushModes
Allows configuration and optimization of how objects are loaded from the data store.
Since:
0.3.0
Author:
Abe White, Pinaki Poddar
  • Field Details

  • Method Details

    • getContext

      StoreContext getContext()
      Return the context associated with this configuration; may be null if it has not been set or this object has been serialized.
    • setContext

      void setContext(StoreContext ctx)
      Called automatically by the system to associate the fetch configuration with a context before use. The fetch configuration properties should be synchronized with the context's configuration object. Subclasses for specific back ends cannot rely on the context's configuration implementing their back end's configuration sub-interface.
    • clone

      Object clone()
      Clone this instance.
    • copy

      void copy(FetchConfiguration fetch)
      Copy the state from the given fetch configuration to this one.
    • getFetchBatchSize

      int getFetchBatchSize()
      Return the fetch batch size for large result set support. Defaults to the openjpa.FetchBatchSize setting. Note that this property will be ignored under some data stores.
    • setFetchBatchSize

      FetchConfiguration setFetchBatchSize(int fetchBatchSize)
      Set the fetch batch size for large result set support. Defaults to the openjpa.FetchBatchSize setting. Note that this property will be ignored under some data stores.
    • getMaxFetchDepth

      int getMaxFetchDepth()
      Return the maximum depth of fetched instance graph. Defaults to 1
    • setMaxFetchDepth

      FetchConfiguration setMaxFetchDepth(int max)
      Set the maximum depth of the fetched instance graph.
      Parameters:
      max - denotes limiting length of traversal path from a root instance. -1 implies no limit. 0 is not permissible.
    • getQueryCacheEnabled

      boolean getQueryCacheEnabled()
      Return whether or not query caching is enabled. If this returns true but the datacache plugin is not installed, caching will not be enabled. If this returns false, query caching will not be used even if the datacache plugin is installed.
    • setQueryCacheEnabled

      FetchConfiguration setQueryCacheEnabled(boolean cache)
      Control whether or not query caching is enabled. This has no effect if the datacache plugin is not installed, or if the query cache size is set to zero.
    • getFlushBeforeQueries

      int getFlushBeforeQueries()
      The query automatic flush configuration.
    • setFlushBeforeQueries

      FetchConfiguration setFlushBeforeQueries(int flush)
      The query automatic flush configuration.
    • getExtendedPathLookup

      boolean getExtendedPathLookup()
      Affirms if extended path lookup feature is active.
      Since:
      2.0.0
    • setExtendedPathLookup

      FetchConfiguration setExtendedPathLookup(boolean flag)
      Sets extended path lookup feature.
      Since:
      2.0.0
    • getFetchGroups

      Set<String> getFetchGroups()
      Returns immutable set of names of the fetch groups that this component will use when loading objects. Defaults to the openjpa.FetchGroups setting. This set is not thread safe.
    • hasFetchGroup

      boolean hasFetchGroup(String group)
      Return true if the given fetch group has been added.
    • addFetchGroup

      FetchConfiguration addFetchGroup(String group)
      Adds group to the set of fetch group names to use when loading objects.
    • addFetchGroups

      FetchConfiguration addFetchGroups(Collection<String> groups)
      Adds groups to the set of fetch group names to use when loading objects.
    • removeFetchGroup

      FetchConfiguration removeFetchGroup(String group)
      Remove the given fetch group.
    • removeFetchGroups

      FetchConfiguration removeFetchGroups(Collection<String> groups)
      Removes groups from the set of fetch group names to use when loading objects.
    • clearFetchGroups

      FetchConfiguration clearFetchGroups()
      Clears the set of fetch group names to use when loading data. After this operation is invoked, only those fields in the default fetch group (and any requested field) will be loaded when loading an object.
    • resetFetchGroups

      FetchConfiguration resetFetchGroups()
      Resets the set of fetch groups to the list in the global configuration.
    • getFields

      Set<String> getFields()
      Returns the set of fully-qualified field names that this component will use when loading objects. Defaults to the empty set. This set is not thread safe.
    • hasField

      boolean hasField(String field)
      Return true if the given fully-qualified field has been added.
    • addField

      FetchConfiguration addField(String field)
      Adds field to the set of fully-qualified field names to use when loading objects.
    • addFields

      FetchConfiguration addFields(Collection<String> fields)
      Adds fields to the set of fully-qualified field names to use when loading objects.
    • removeField

      FetchConfiguration removeField(String field)
      Remove the given fully-qualified field.
    • removeFields

      FetchConfiguration removeFields(Collection<String> fields)
      Removes fields from the set of fully-qualified field names to use when loading objects.
    • clearFields

      FetchConfiguration clearFields()
      Clears the set of field names to use when loading data. After this operation is invoked, only those fields in the configured fetch groups will be loaded when loading an object.
    • getLockTimeout

      int getLockTimeout()
      The number of milliseconds to wait for an object lock, or -1 for no limit.
      Since:
      0.3.1
    • setLockTimeout

      FetchConfiguration setLockTimeout(int timeout)
      The number of milliseconds to wait for an object lock, or -1 for no limit.
      Since:
      0.3.1
    • getLockScope

      int getLockScope()
      The lock scope for next fetch.
      Since:
      2.0.0
    • setLockScope

      FetchConfiguration setLockScope(int scope)
      The lock scope for next fetch.
      Since:
      2.0.0
    • getQueryTimeout

      int getQueryTimeout()
      The number of milliseconds to wait for a query, or -1 for no limit.
      Since:
      2.0.0
    • setQueryTimeout

      FetchConfiguration setQueryTimeout(int timeout)
      The number of milliseconds to wait for a query, or -1 for no limit.
      Since:
      2.0.0
    • getReadLockLevel

      int getReadLockLevel()
      The lock level to use for locking loaded objects.
      Since:
      0.3.1
    • setReadLockLevel

      FetchConfiguration setReadLockLevel(int level)
      The lock level to use for locking loaded objects.
      Since:
      0.3.1
    • getWriteLockLevel

      int getWriteLockLevel()
      The lock level to use for locking dirtied objects.
      Since:
      0.3.1
    • getCacheStoreMode

      DataCacheStoreMode getCacheStoreMode()
      Gets the current storage mode for data cache.
      Since:
      2.0.0
    • setCacheStoreMode

      void setCacheStoreMode(DataCacheStoreMode mode)
      Sets the current storage mode for data cache.
      Since:
      2.0.0
    • getCacheRetrieveMode

      DataCacheRetrieveMode getCacheRetrieveMode()
      Gets the current retrieve mode for data cache.
      Since:
      2.0.0
    • setCacheRetrieveMode

      void setCacheRetrieveMode(DataCacheRetrieveMode mode)
      Sets the current retrieve mode for data cache.
      Since:
      2.0.0
    • setWriteLockLevel

      FetchConfiguration setWriteLockLevel(int level)
      The lock level to use for locking dirtied objects.
      Since:
      0.3.1
    • newResultList

      ResultList<?> newResultList(ResultObjectProvider rop)
      Return a new result list for the current fetch configuration.
    • setHint

      void setHint(String name, Object value, Object original)
      Sets an arbitrary query hint that may be utilized during execution. The hint may be specific to a particular database. A hint, if known to this receiver, may have a corresponding setter method, then the hint sets the value. Otherwise the hint is stored opaquely by the receiver.
      Parameters:
      name - the name of the hint
      value - the value of the hint. If the hint has a corresponding setter, then the type of value must be same as the setter argument.
      original - the value of the hint as specified by the user.
      Since:
      2.0.0
    • setHint

      void setHint(String key, Object value)
      Sets an arbitrary query hint that may be utilized during execution. The hint may be specific to a particular database. A hint, if known to this receiver, may have a corresponding setter method, then the hint sets the value. Otherwise the hint is stored opaquely by the receiver.
      This is same as calling setHint(String, Object, Object) with the third argument being the same as the second.
      Parameters:
      name - the name of the hint
      value - the value of the hint. If the hint has a corresponding setter, then the type of value must be same as the setter argument.
      Since:
      2.0.0
    • getHint

      Object getHint(String key)
      Get the hint value for the specific key as originally set by the caller, or null if the hint is not specified.
      Parameters:
      name - the hint name
      Since:
      0.4.0
    • getHints

      Map<String,Object> getHints()
      Get an immutable view of the currently active hints and their values. The values are as specified by the user.
      Since:
      2.0.0
    • isHintSet

      boolean isHintSet(String key)
      Affirm if the given hint has been set in this receiver.
    • isDefaultPUFetchGroupConfigurationOnly

      boolean isDefaultPUFetchGroupConfigurationOnly()
      Affirm if the Fetch Plan currently matches the Persistence Unit's configured default.
    • getRootClasses

      Set<Class<?>> getRootClasses()
      Root classes for recursive operations. This set is not thread safe.
    • setRootClasses

      FetchConfiguration setRootClasses(Collection<Class<?>> classes)
      Root classes for recursive operations.
    • getRootInstances

      Set<Object> getRootInstances()
      Root instances for recursive operations. This set is not thread safe.
    • setRootInstances

      FetchConfiguration setRootInstances(Collection<?> roots)
      Root instances for recursive operations.
    • lock

      void lock()
      Synchronize on internal lock if multithreaded is true.
    • unlock

      void unlock()
      Release internal lock if multithreaded is true.
    • requiresFetch

      int requiresFetch(FieldMetaData fm)
      Affirms if the given field requires to be fetched in the context of current fetch operation. Returns one of FETCH_NONE, FETCH_LOAD, FETCH_REF.
      Since:
      0.4.1
    • requiresLoad

      boolean requiresLoad()
      Return false if we know that the object being fetched with this configuration does not require a load, because this configuration came from a traversal of a FETCH_REF field.
    • traverse

      Traverse the given field to generate (possibly) a new configuration state.
      Returns:
      a new configuration state resulting out of traversal
      Since:
      0.4.1
    • isFetchConfigurationSQLCacheAdmissible

      boolean isFetchConfigurationSQLCacheAdmissible()
      Whether SQL generated by the FetchConfiguration's current configuration should be cached.