Package org.datanucleus
Class FetchPlan
- java.lang.Object
-
- org.datanucleus.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 Summary
Fields Modifier and Type Field Description static String
ALL
Constant defining all fieldsstatic String
DEFAULT
Constant defining the fields in the default fetch group.static int
DETACH_LOAD_FIELDS
Members that are not loaded but are in the current fetch plan should be loaded before detachment.static int
DETACH_UNLOAD_FIELDS
Members that are loaded but not in current fetch plan should be unloaded before detachment.static int
FETCH_SIZE_GREEDY
Fetch size to load all possible.static int
FETCH_SIZE_OPTIMAL
Fetch size for the implementation to decide how many to load.static String
NONE
Constant defing no fields.static int
RECURSION_DEPTH_FK_ONLY
static int
RECURSION_DEPTH_UNLIMITED
-
Constructor Summary
Constructors Constructor Description FetchPlan(ExecutionContext ec, ClassLoaderResolver clr)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description FetchPlan
addGroup(String grpName)
Method to add a group to the fetch plan.FetchPlan
clearGroups()
Method to clear the current groups and activate the DFG.FetchPlan
getCopy()
Returns a copy of this FetchPlan with all settings initialized.int
getDetachmentOptions()
Return the options to be used at detachment.Class[]
getDetachmentRootClasses()
Accessor for the root classes of the detachment graph for DetachAllOnCommit.Collection<Object>
getDetachmentRoots()
Accessor for the roots of the detachment graph for DetachAllOnCommit.FetchPlanForClass
getFetchPlanForClass(AbstractClassMetaData cmd)
Access the fetch plan for the class.int
getFetchSize()
Accessor for the fetch size when using large result sets.Set<String>
getGroups()
Accessor for the static groups for this FetchPlan.int
getMaxFetchDepth()
Accessor for the maximum fetch depth.void
notifyFetchGroupChange(FetchGroup group)
Method to notify this FetchPlan that the specified FetchGroup has been updated.void
notifyFetchGroupRemove(FetchGroup group)
Method to notify this FetchPlan that the specified FetchGroup has been updated.FetchPlan
removeGroup(String grpName)
Method to remove a group from the fetch plan.FetchPlan
setDetachmentOptions(int options)
Set the options to be used at detachment.FetchPlan
setDetachmentRootClasses(Class[] rootClasses)
Set the classes used for roots of the detachment graph for DetachAllOnCommit.FetchPlan
setDetachmentRoots(Collection<Object> roots)
Set the roots for DetachAllOnCommitFetchPlan
setFetchSize(int fetchSize)
Method to set the fetch size when using large result sets.FetchPlan
setGroup(String grpName)
Method to set the fetch group.FetchPlan
setGroups(String[] grpNames)
Method to set the groups using an array.FetchPlan
setGroups(Collection<String> grpNames)
Method to set the groups of the fetch plan.FetchPlan
setMaxFetchDepth(int max)
Mutator for the maximum fetch depth where -1 implies no restriction on the fetch depth.String
toString()
String
toStringWithClasses()
-
-
-
Field Detail
-
DEFAULT
public static final String DEFAULT
Constant defining the fields in the default fetch group.- See Also:
- Constant Field Values
-
ALL
public static final String ALL
Constant defining all fields- See Also:
- Constant Field Values
-
NONE
public static final String NONE
Constant defing no fields.- See Also:
- Constant Field Values
-
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 contextclr
- 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()
-
-