Class FetchPlan

  • All Implemented Interfaces:
    Serializable

    public class FetchPlan
    extends Object
    implements Serializable
    FetchPlan for fields for use internally. A FetchPlan has a series of FetchPlanForClass objects being the fetch plan for particular classes. Each FetchPlanForClass defines a series of fields of that class that are part of the fetch plan. There are two types of fetch groups under consideration here.
    • Static fetch groups, defined in MetaData (XML/Annotations).
    • Dynamic fetch groups, defined via an API.
    See Also:
    Serialized Form
    • Field Detail

      • DETACH_UNLOAD_FIELDS

        public static final int DETACH_UNLOAD_FIELDS
        Members that are loaded but not in current fetch plan should be unloaded before detachment.
        See Also:
        Constant Field Values
      • DETACH_LOAD_FIELDS

        public static final int DETACH_LOAD_FIELDS
        Members that are not loaded but are in the current fetch plan should be loaded before detachment.
        See Also:
        Constant Field Values
      • FETCH_SIZE_GREEDY

        public static final int FETCH_SIZE_GREEDY
        Fetch size to load all possible.
        See Also:
        Constant Field Values
      • FETCH_SIZE_OPTIMAL

        public static final int FETCH_SIZE_OPTIMAL
        Fetch size for the implementation to decide how many to load.
        See Also:
        Constant Field Values
      • RECURSION_DEPTH_UNLIMITED

        public static final int RECURSION_DEPTH_UNLIMITED
        See Also:
        Constant Field Values
      • RECURSION_DEPTH_FK_ONLY

        public static final int RECURSION_DEPTH_FK_ONLY
        See Also:
        Constant Field Values
    • Constructor Detail

      • FetchPlan

        public FetchPlan​(ExecutionContext ec,
                         ClassLoaderResolver clr)
        Constructor. Initially has the default fetch group.
        Parameters:
        ec - execution context
        clr - ClassLoader Resolver
    • Method Detail

      • getFetchPlanForClass

        public FetchPlanForClass getFetchPlanForClass​(AbstractClassMetaData cmd)
        Access the fetch plan for the class.
        Parameters:
        cmd - metadata for the class
        Returns:
        the FetchPlanForClass
      • addGroup

        public FetchPlan addGroup​(String grpName)
        Method to add a group to the fetch plan.
        Parameters:
        grpName - The fetch group to add
        Returns:
        Updated Fetch Plan
      • removeGroup

        public FetchPlan removeGroup​(String grpName)
        Method to remove a group from the fetch plan.
        Parameters:
        grpName - The fetch group to remove
        Returns:
        Updated Fetch Plan
      • clearGroups

        public FetchPlan clearGroups()
        Method to clear the current groups and activate the DFG.
        Returns:
        The FetchPlan
      • getGroups

        public Set<String> getGroups()
        Accessor for the static groups for this FetchPlan. Doesn't return the dynamic groups.
        Returns:
        The fetch plan groups (unmodifiable)
      • setGroups

        public FetchPlan setGroups​(Collection<String> grpNames)
        Method to set the groups of the fetch plan.
        Parameters:
        grpNames - Names of the groups
        Returns:
        Updated Fetch Plan
      • setGroups

        public FetchPlan setGroups​(String[] grpNames)
        Method to set the groups using an array.
        Parameters:
        grpNames - Names of the groups
        Returns:
        The Fetch Plan
      • setGroup

        public FetchPlan setGroup​(String grpName)
        Method to set the fetch group.
        Parameters:
        grpName - Name of the group
        Returns:
        The Fetch Plan
      • notifyFetchGroupChange

        public void notifyFetchGroupChange​(FetchGroup group)
        Method to notify this FetchPlan that the specified FetchGroup has been updated. dynamic fetch groups extension
        Parameters:
        group - The dynamic FetchGroup
      • notifyFetchGroupRemove

        public void notifyFetchGroupRemove​(FetchGroup group)
        Method to notify this FetchPlan that the specified FetchGroup has been updated. dynamic fetch groups extension
        Parameters:
        group - The dynamic FetchGroup
      • setDetachmentRoots

        public FetchPlan setDetachmentRoots​(Collection<Object> roots)
        Set the roots for DetachAllOnCommit
        Parameters:
        roots - The roots of the detachment graph.
        Returns:
        The fetch plan with these roots
      • getDetachmentRoots

        public Collection<Object> getDetachmentRoots()
        Accessor for the roots of the detachment graph for DetachAllOnCommit.
        Returns:
        The roots of the detachment graph.
      • setDetachmentRootClasses

        public FetchPlan setDetachmentRootClasses​(Class[] rootClasses)
        Set the classes used for roots of the detachment graph for DetachAllOnCommit.
        Parameters:
        rootClasses - Classes to be used as roots of the detachment graph
        Returns:
        The fetch plan with these roots
      • getDetachmentRootClasses

        public Class[] getDetachmentRootClasses()
        Accessor for the root classes of the detachment graph for DetachAllOnCommit.
        Returns:
        The classes to be used as the root of the detachment graph.
      • setMaxFetchDepth

        public FetchPlan setMaxFetchDepth​(int max)
        Mutator for the maximum fetch depth where -1 implies no restriction on the fetch depth. Throws NucleusUserException when an illegal value (either 0 or ≤ -2)
        Parameters:
        max - The maximum fetch depth to fetch to
        Returns:
        The FetchPlan
      • getMaxFetchDepth

        public int getMaxFetchDepth()
        Accessor for the maximum fetch depth.
        Returns:
        The maximum fetch depth
      • setFetchSize

        public FetchPlan setFetchSize​(int fetchSize)
        Method to set the fetch size when using large result sets.
        Parameters:
        fetchSize - the size
        Returns:
        Updated Fetch Plan
      • getFetchSize

        public int getFetchSize()
        Accessor for the fetch size when using large result sets.
        Returns:
        The size
      • getDetachmentOptions

        public int getDetachmentOptions()
        Return the options to be used at detachment.
        Returns:
        Detachment options
      • setDetachmentOptions

        public FetchPlan setDetachmentOptions​(int options)
        Set the options to be used at detachment.
        Parameters:
        options - The options
        Returns:
        The updated fetch plan.
      • getCopy

        public FetchPlan getCopy()
        Returns a copy of this FetchPlan with all settings initialized. Used when a Query has to have its own FetchPlan, so takes a copy of that of the ExecutionContext.
        Returns:
        the FetchPlan copy
      • toStringWithClasses

        public String toStringWithClasses()