|
EclipseLink1.0 - 20080707 API Reference | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.eclipse.persistence.queries.DatabaseQuery
org.eclipse.persistence.queries.ReadQuery
org.eclipse.persistence.queries.ObjectBuildingQuery
public abstract class ObjectBuildingQuery
Purpose: Abstract class for all read queries that build objects and potentially manipulate the TopLink cache.
Description: Contains common behavior for all read queries building objects.
Field Summary | |
---|---|
static short |
DEFAULT_LOCK_MODE
|
protected long |
executionTime
Used to set the read time on objects that use this query. |
static short |
LOCK
|
static short |
LOCK_NOWAIT
|
static java.lang.String |
LOCK_RESULT_PROPERTY
INTERNAL: This is the key for accessing unregistered and locked result in the query's properties. |
protected org.eclipse.persistence.internal.expressions.ForUpdateClause |
lockingClause
Used for pessimistic locking. |
static short |
NO_LOCK
|
protected java.lang.Class |
referenceClass
The class of the target objects to be read from the database. |
protected java.lang.String |
referenceClassName
|
protected boolean |
shouldBuildNullForNullPk
INTERNAL: If primary key is null ObjectBuilder.buildObject returns null in case this flag is set to true (instead of throwing exception). |
protected boolean |
shouldProcessResultsInUnitOfWork
CMP only. |
protected boolean |
shouldRefreshIdentityMapResult
Allows for the resulting objects to be refresh with the data from the database. |
protected boolean |
shouldRefreshRemoteIdentityMapResult
|
protected boolean |
shouldRegisterResultsInUnitOfWork
INTERNAL: for bug 2612601 allow ability not to register results in UOW. |
protected boolean |
shouldUseExclusiveConnection
Added for Exclusive Connection (VPD) support see accessor for information |
protected boolean |
wasDefaultLockMode
PERF: Store if the query originally used the default lock mode. |
Fields inherited from class org.eclipse.persistence.queries.ReadQuery |
---|
fetchSize, firstResult, maxRows, queryId, queryResultCachingPolicy, temporaryCachedQueryResults |
Constructor Summary | |
---|---|
ObjectBuildingQuery()
INTERNAL: Initialize the state of the query |
Method Summary | |
---|---|
void |
convertClassNamesToClasses(java.lang.ClassLoader classLoader)
INTERNAL: Convert all the class-name-based settings in this query to actual class-based settings. |
void |
copyFromQuery(DatabaseQuery query)
INTERNAL: Copy all setting from the query. |
java.lang.Object |
deepClone()
INTERNAL: Clone the query, including its selection criteria. |
void |
dontRefreshIdentityMapResult()
PUBLIC: When unset means perform read normally and dont do refresh. |
void |
dontRefreshRemoteIdentityMapResult()
PUBLIC: When unset means perform read normally and dont do refresh. |
java.util.List |
getDataResults()
INTERNAL: Return all of the rows fetched by the query, used for 1-m joining. |
long |
getExecutionTime()
INTERNAL: Return the time this query actually went to the database |
FetchGroup |
getFetchGroup()
Return the fetch group set in the query. |
short |
getLockMode()
PUBLIC: Return the current locking mode. |
java.lang.Class |
getReferenceClass()
PUBLIC: Return the reference class of the query. |
java.lang.String |
getReferenceClassName()
INTERNAL: Return the reference class of the query. |
boolean |
hasPartialAttributeExpressions()
INTERNAL: Return if partial attributes. |
boolean |
isAttributeJoined(ClassDescriptor mappingDescriptor,
java.lang.String attributeName)
INTERNAL: Return if the attribute is specified for joining. |
boolean |
isClonePessimisticLocked(java.lang.Object clone,
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Helper method that checks if clone has been locked with uow. |
boolean |
isDefaultLock()
INTERNAL: Helper method to determine the default mode. |
boolean |
isLockQuery()
PUBLIC: Answers if the query lock mode is known to be LOCK or LOCK_NOWAIT. |
boolean |
isObjectBuildingQuery()
PUBLIC: Return if this is an object building query. |
protected boolean |
isRegisteringResults()
INTERNAL: Answers if we are executing through a UnitOfWork and registering results. |
void |
prepareFromQuery(DatabaseQuery query)
INTERNAL: Prepare the query from the prepared query. |
void |
recordCloneForPessimisticLocking(java.lang.Object clone,
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Helper method that records clone with uow if query is pessimistic locking. |
void |
refreshIdentityMapResult()
PUBLIC: Refresh the attributes of the object(s) resulting from the query. |
void |
refreshRemoteIdentityMapResult()
PUBLIC: Refresh the attributes of the object(s) resulting from the query. |
java.lang.Object |
registerIndividualResult(java.lang.Object result,
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager)
INTERNAL: Constructs the final (registered) object for every individual object queried via a UnitOfWork. |
void |
setExecutionTime(long executionTime)
INTERNAL: Set the the time this query went to the database. |
void |
setLockMode(short lockMode)
PUBLIC: Sets whether this is a pessimistically locking query. |
void |
setReferenceClass(java.lang.Class aClass)
REQUIRED: Set the reference class for the query. |
void |
setReferenceClassName(java.lang.String aClass)
INTERNAL: Set the reference class for the query. |
void |
setShouldBuildNullForNullPk(boolean shouldBuildNullForNullPk)
INTERNAL: If primary key is null ObjectBuilder.buildObject returns null in case this flag is set to true (instead of throwing exception). |
void |
setShouldProcessResultsInUnitOfWork(boolean processResultsInUnitOfWork)
ADVANCED: Used for CMP only. |
void |
setShouldRefreshIdentityMapResult(boolean shouldRefreshIdentityMapResult)
PUBLIC: Set if the attributes of the object(s) resulting from the query should be refreshed. |
void |
setShouldRefreshRemoteIdentityMapResult(boolean shouldRefreshIdentityMapResult)
PUBLIC: Set if the attributes of the object(s) resulting from the query should be refreshed. |
void |
setShouldRegisterResultsInUnitOfWork(boolean shouldRegisterResultsInUnitOfWork)
INTERNAL: Set to false to have queries conform to a UnitOfWork without registering any additional objects not already in that UnitOfWork. |
void |
setShouldUseExclusiveConnection(boolean shouldUseExclusiveConnection)
ADVANCED: If the user has isolated data and specified that the client session should use an exclusive connection then by setting this condition to true TopLink will ensure that the query is executed through the exclusive connection. |
protected void |
setWasDefaultLockMode(boolean wasDefaultLockMode)
INTERNAL: Set if this query originally used the default lock mode. |
boolean |
shouldBuildNullForNullPk()
INTERNAL: If primary key is null ObjectBuilder.buildObject returns null in case this flag is set to true (instead of throwing exception). |
boolean |
shouldProcessResultsInUnitOfWork()
ADVANCED: Used for CMP only. |
boolean |
shouldReadAllMappings()
INTERNAL: Return if this is a full object query, not partial nor fetch group. |
boolean |
shouldReadMapping(DatabaseMapping mapping)
INTERNAL: Check if the mapping is part of the partial attributes. |
boolean |
shouldRefreshIdentityMapResult()
PUBLIC: Set to a boolean. |
boolean |
shouldRefreshRemoteIdentityMapResult()
PUBLIC: Set to a boolean. |
boolean |
shouldRegisterResultsInUnitOfWork()
INTERNAL: Allows one to do conforming in a UnitOfWork without registering. |
boolean |
shouldUseExclusiveConnection()
ADVANCED: If the user has isolated data and specified that the client session should use an exclusive connection then by setting this condition to true EclipseLink will ensure that the query is executed through the exclusive connection. |
java.lang.String |
toString()
|
protected boolean |
wasDefaultLockMode()
INTERNAL: Return if this query originally used the default lock mode. |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected java.lang.Class referenceClass
protected java.lang.String referenceClassName
protected boolean shouldRefreshIdentityMapResult
protected boolean shouldRefreshRemoteIdentityMapResult
protected boolean shouldRegisterResultsInUnitOfWork
protected boolean shouldProcessResultsInUnitOfWork
protected org.eclipse.persistence.internal.expressions.ForUpdateClause lockingClause
public static final short NO_LOCK
public static final short LOCK
public static final short LOCK_NOWAIT
public static final short DEFAULT_LOCK_MODE
protected long executionTime
protected boolean shouldUseExclusiveConnection
public static final java.lang.String LOCK_RESULT_PROPERTY
protected boolean wasDefaultLockMode
protected boolean shouldBuildNullForNullPk
Constructor Detail |
---|
public ObjectBuildingQuery()
Method Detail |
---|
public void convertClassNamesToClasses(java.lang.ClassLoader classLoader)
convertClassNamesToClasses
in class DatabaseQuery
classLoader
- protected boolean wasDefaultLockMode()
protected void setWasDefaultLockMode(boolean wasDefaultLockMode)
public java.lang.Object deepClone()
Normally selection criteria are not cloned here as they are cloned later on during prepare.
public void copyFromQuery(DatabaseQuery query)
copyFromQuery
in class ReadQuery
public void prepareFromQuery(DatabaseQuery query)
prepareFromQuery
in class DatabaseQuery
public void dontRefreshIdentityMapResult()
public void dontRefreshRemoteIdentityMapResult()
public FetchGroup getFetchGroup()
public short getLockMode()
public java.util.List getDataResults()
public long getExecutionTime()
public java.lang.Class getReferenceClass()
getReferenceClass
in class DatabaseQuery
public java.lang.String getReferenceClassName()
getReferenceClassName
in class DatabaseQuery
public boolean hasPartialAttributeExpressions()
public boolean isLockQuery()
If a single joined attribute was configured for pessimistic locking then this will return true (after first execution) as the SQL contained a FOR UPDATE OF clause.
public boolean isObjectBuildingQuery()
isObjectBuildingQuery
in class DatabaseQuery
protected boolean isRegisteringResults()
public void refreshIdentityMapResult()
public void refreshRemoteIdentityMapResult()
public java.lang.Object registerIndividualResult(java.lang.Object result, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager)
Called for every object in a read all, the object in a read object, and every time the next or previous row is retrieved from a cursor.
The (conform) without registering feature is implemented here, and may return an original non UnitOfWork registered result.
Pessimistically locked objects are tracked here.
public void setExecutionTime(long executionTime)
public void setLockMode(short lockMode)
Fine Grained Locking: On execution the reference class and those of all joined attributes will be checked. If any of these have a PessimisticLockingPolicy set on their descriptor, they will be locked in a SELECT ... FOR UPDATE OF ... {NO WAIT}. Issues fewer locks and avoids setting the lock mode on each query.
Example:readAllQuery.setSelectionCriteria(employee.get("address").equal("Ottawa"));
PessimisticLockingPolicy
public void setReferenceClass(java.lang.Class aClass)
public void setReferenceClassName(java.lang.String aClass)
public void setShouldRefreshIdentityMapResult(boolean shouldRefreshIdentityMapResult)
public void setShouldRefreshRemoteIdentityMapResult(boolean shouldRefreshIdentityMapResult)
public void setShouldRegisterResultsInUnitOfWork(boolean shouldRegisterResultsInUnitOfWork)
shouldRegisterResultsInUnitOfWork
public void setShouldUseExclusiveConnection(boolean shouldUseExclusiveConnection)
public boolean shouldRegisterResultsInUnitOfWork()
Extreme care should be taken in using this feature, for a user will get back a mix of registered and original (unregistered) objects.
Best used with a WrapperPolicy where invoking on an object will trigger
its registration (CMP). Without a WrapperPolicy registerExistingObject
should be called on any object that you intend to change.
setShouldRegisterResultsInUnitOfWork(boolean)
public boolean shouldUseExclusiveConnection()
public boolean shouldReadAllMappings()
public boolean shouldReadMapping(DatabaseMapping mapping)
public boolean shouldRefreshIdentityMapResult()
public boolean shouldRefreshRemoteIdentityMapResult()
public java.lang.String toString()
toString
in class DatabaseQuery
public void setShouldProcessResultsInUnitOfWork(boolean processResultsInUnitOfWork)
If set to false, then UnitOfWork allocation will be deferred until a business method (including creates/removes) or finder with shouldProcessResultsInUnitOfWork == true is invoked. Any finder executed before such a time, will do so against the underlying ServerSession. Forcing finder execution to always go through a UnitOfWork means the results will be cloned and cached in the UnitOfWork up front. This is desired when the results will be accessed in the same transaction.
Note that finders executed with an unspecified transaction context will never be executed against a UnitOfWork, even if this setting is true. This case may happen with the NotSupported, Never, and Supports attributes.
public boolean shouldProcessResultsInUnitOfWork()
If set to false, then UnitOfWork allocation will be deferred until a business method (including creates/removes) or finder with shouldProcessResultsInUnitOfWork == true is invoked. Any finder executed before such a time, will do so against the underlying ServerSession. Forcing finder execution to always go through a UnitOfWork means the results will be cloned and cached in the UnitOfWork up front. This is desired when the results will be accessed in the same transaction.
Note that finders executed with an unspecified transaction context will never be executed against a UnitOfWork, even if this setting is true. This case may happen with the NotSupported, Never, and Supports attributes.
public boolean isAttributeJoined(ClassDescriptor mappingDescriptor, java.lang.String attributeName)
public boolean isClonePessimisticLocked(java.lang.Object clone, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
public void recordCloneForPessimisticLocking(java.lang.Object clone, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
public boolean isDefaultLock()
public boolean shouldBuildNullForNullPk()
public void setShouldBuildNullForNullPk(boolean shouldBuildNullForNullPk)
|
EclipseLink1.0 - 20080707 API Reference | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |