public class FetchGroup
extends java.lang.Object
implements java.io.Serializable
Purpose: A fetch group is a performance enhancement that allows a group of attributes of an object to be loaded on demand, which means that the data for an attribute might not loaded from the underlying data source until an explicit access call for the attribute first occurs. It avoids the wasteful practice of loading up all data of the object?s attributes, in which the user is interested in only partial of them. A great deal of caution and careful system use case analysis should be use when using the fetch group feature, as the extra round-trip would well offset the gain from the deferred loading in many cases. TopLink fetch group support is twofold: the pre-defined fetch groups at the descriptor level; and dynamic (use case) fetch groups at the query level. TopLink fetch group support is only on CMP project. Every query can has at most one fetch group. There is an optional pre-defined default fetch group at the descriptor level. If set, and the query has no fetch group being set, the default fetch group would be used, unless query.setShouldUseDefaultFetchGroup(false) is also called. In the latter case, the full object will be fetched after the query execution.
FetchGroup
,
FetchGroupTracker
,
Serialized FormConstructor and Description |
---|
FetchGroup()
Constructor.
|
FetchGroup(java.lang.String name)
Constructor with a group name.
|
Modifier and Type | Method and Description |
---|---|
void |
addAttribute(java.lang.String attrName)
Add an attribute to the group
|
void |
addAttributes(java.util.Set newAttributes)
Add a set of attributes to the group
|
void |
addFetchGroupAttribute(Expression attributeExpression)
INTERNAL:
Specify that only a subset of the class' attributes be fetched in this query.
|
java.util.Set |
getAttributes()
Return all attributes defined in the group
|
java.util.List |
getFetchGroupAttributeExpressions()
INTERNAL:
Return the attibute expression list.
|
java.lang.String |
getName()
Return the group name
|
boolean |
hasFetchGroupAttributeExpressions()
INTERNAL:
Return if fetch group attributes.
|
boolean |
isSupersetOf(FetchGroup anotherGroup)
INTERNAL:
Return true if this fetch group is a super-set of the passed in fetch group
|
void |
removeAttribute(java.lang.String attrName)
Remove an attribute from the group
|
void |
setFetchGroupAttributeExpressions(java.util.List fetchGroupAttributeExpressions)
INTERNAL:
Set the attibute expression list.
|
void |
setName(java.lang.String name)
Set the group name
|
public FetchGroup()
public FetchGroup(java.lang.String name)
public java.util.Set getAttributes()
public void addAttribute(java.lang.String attrName)
public void addAttributes(java.util.Set newAttributes)
public void removeAttribute(java.lang.String attrName)
public java.lang.String getName()
public void setName(java.lang.String name)
public boolean isSupersetOf(FetchGroup anotherGroup)
public java.util.List getFetchGroupAttributeExpressions()
public void setFetchGroupAttributeExpressions(java.util.List fetchGroupAttributeExpressions)
public boolean hasFetchGroupAttributeExpressions()
public void addFetchGroupAttribute(Expression attributeExpression)
This allows for the query to be optimized through selecting less data.
Partial objects will be returned from the query, where the unspecified attributes will be left in their default value. The primary key, and optimistic locking version (version or timestamp) if defined, will always be fetched. The partial object is cached and can be modified. An access through getter to an un-fetched attribute will trigger another SELECT to load the whole object.
Note: Modifying un-fetched attribute is not supported and exception would thrown.