FetchGroup
FetchGroup represents a named fetch group for a specific class or interface. A fetch group instance identifies the name of the class or interface, the list of members (fields or properties) to be fetched when the fetch group is active, and the recursion depth for each member.
Fetch groups are updated using methods on this interface. An instance of a class implementing this interface can be obtained from PersistenceManager.getFetchGroup or PersistenceManagerFactory.getFetchGroup.
A FetchGroup can be unscoped or can be in one of two scopes (the PersistenceManager or the PersistenceManagerFactory scope). Unscoped FetchGroups do not affect any behavior. A FetchGroup in PersistenceManager scope hides the corresponding FetchGroup in the PersistenceManagerFactory scope.
- When a FetchGroup is obtained via PersistenceManager.getFetchGroup, it is immediately in scope of its
PersistenceManager
. Subsequent modifications of the FetchGroup immediately affectFetchPlan
s that contain theFetchGroup
. - When a FetchGroup is obtained via PersistenceManagerFactory.getFetchGroup, it is unscoped.
- When a FetchGroup is added to the set of active FetchGroups via PersistenceManagerFactory.addFetchGroups, it is put in scope of the
PersistenceManagerFactory
. - When a FetchGroup is removed from the set of active FetchGroups via PersistenceManagerFactory.removeFetchGroups, PersistenceManagerFactory.removeAllFetchGroups, or replaced via PersistenceManagerFactory.addFetchGroups, it is unscoped.
- Since:
- JDO 2.2
Public Methods
FetchGroup addCategory(String categoryName)
This method first resolves the category name to a set of members and then adds the members as if addMembers was called. After this method executes, the category is not remembered.
- Return:
- the FetchGroup
- Throws:
- JDOUserException - if the FetchGroup is unmodifiable
- Since:
- JDO 2.2
FetchGroup addMember(String memberName)
- Parameters:
memberName
- the name of a member to add to the FetchGroup
- Return:
- the FetchGroup
- Throws:
- JDOUserException - if the parameter is not a member of the persistent type
- JDOUserException - if the FetchGroup is unmodifiable
- Since:
- JDO 2.2
FetchGroup addMembers(String... memberNames)
Duplicates are ignored.
- Parameters:
memberNames
- the names of members to add to the FetchGroup
- Return:
- the FetchGroup
- Throws:
- JDOUserException - if any parameter is not a member of the persistent type
- JDOUserException - if the FetchGroup is unmodifiable
- Since:
- JDO 2.2
boolean equals(Object other)
The equals method must compare the class for identity and the fetch group name for equality.
- Return:
- whether this instance is equal to the other
- Since:
- JDO 2.2
Set getMembers()
The Set is a copy of the currently defined members and will not change based on subsequent changes to the membership in the FetchGroup.
- Return:
- an immutable Set containing the names of all members in the FetchGroup
- Since:
- JDO 2.2
String getName()
The name is set only in the factory method.
- Return:
- the name
- Since:
- JDO 2.2
boolean getPostLoad()
- Return:
- the post-load property
- Since:
- JDO 2.2
int getRecursionDepth(String memberName)
- Parameters:
memberName
- the name of the field or property
- Return:
- the recursion-depth for this member
- Throws:
- JDOUserException - if the member is not in the FetchGroup
- Since:
- JDO 2.2
Class getType()
The persistent type is set only in the factory method(s).
- Return:
- the persistent type
- Since:
- JDO 2.2
int hashCode()
The hash code should combine both the class and fetch group name. The hash codes for two equal instances must be identical.
- Return:
- the hash code
- Since:
- JDO 2.2
boolean isUnmodifiable()
If so, methods setPostLoad, addMember, removeMember, addMembers, removeMembers, addCategory, and removeCategory will throw JDOUserException.
- Return:
- whether the FetchGroup is unmodifiable
- Since:
- JDO 2.2
FetchGroup removeCategory(String categoryName)
This method first resolves the category name to a set of members and then removes the members as if removeMembers was called. After this method executes, the category is not remembered.
- Return:
- the FetchGroup
- Throws:
- JDOUserException - if the FetchGroup is unmodifiable
- Since:
- JDO 2.2
FetchGroup removeMember(String memberName)
- Return:
- the FetchGroup
- Throws:
- JDOUserException - if the parameter is not a member of the persistent type
- JDOUserException - if the FetchGroup is unmodifiable
- Since:
- JDO 2.2
FetchGroup removeMembers(String... memberNames)
Duplicates in the parameter list are eliminated before removing them from the membership.
- Return:
- the FetchGroup
- Throws:
- JDOUserException - if any parameter is not a member of the persistent type
- JDOUserException - if the FetchGroup is unmodifiable
- Since:
- JDO 2.2
FetchGroup setPostLoad(boolean postLoad)
FetchGroup setRecursionDepth(String memberName, int recursionDepth)
The default is 1. A value of 0 means don't fetch the member (as if the member were omitted entirely). A value of -1 means fetch all instances reachable via this member.
- Parameters:
memberName
- the name of the field or propertyrecursionDepth
- the value for the recursion-depth property
- Return:
- the FetchGroup
- Throws:
- JDOUserException - if the member does not exist
- JDOUserException - if the FetchGroup is unmodifiable
- Since:
- JDO 2.2
FetchGroup setUnmodifiable()
If already unmodifiable, this method has no effect.
- Return:
- the FetchGroup
- Since:
- JDO 2.2
Public Static Fields
This category includes all members in the persistent type.
Using this category also sets the fetch-depth for the members in the default fetch group.
- Since:
- JDO 2.2
This category includes members of all primitive and immutable object class types as defined in section 6.4 of the specification, including String, Locale, Currency, BigDecimal, and BigInteger; as well as Date and its jdbc subtypes and Enum types.
- Since:
- JDO 2.2
This category includes members defined in the default fetch group in xml or annotations. Redefining the default fetch group via the API does not affect the members defined by this category.
Using this category also sets the fetch-depth for the members in the default fetch group.
- Since:
- JDO 2.2
This category includes members of all multi-valued types, including Collection, array, and Map types of basic and relationship types.
- Since:
- JDO 2.2
This category includes members of all relationship types.
- Since:
- JDO 2.2