public class RepeatableWriteUnitOfWork extends UnitOfWorkImpl
UnitOfWork.CommitOrderTypeAfterExternalTransactionRolledBack, Birth, CommitPending, CommitTransactionPending, Death, DO_NOT_THROW_CONFORM_EXCEPTIONS, Full, LOCK_QUERIES_PROPERTY, MergePending, None, Partial, ReadLockOnly, ReadLockUpdateVersion, THROW_ALL_CONFORM_EXCEPTIONS, WriteChangesFailedLOG_DEBUG, LOG_ERROR, LOG_INFO, LOG_WARNING| Constructor and Description |
|---|
RepeatableWriteUnitOfWork() |
RepeatableWriteUnitOfWork(AbstractSession parentSession,
ReferenceMode referenceMode) |
| Modifier and Type | Method and Description |
|---|---|
void |
clear(boolean shouldClearCache)
INTERNAL:
This method will clear all registered objects from this UnitOfWork.
|
void |
clearFlushClearCache()
INTERNAL:
Clears invalidation list.
|
void |
clearForClose(boolean shouldClearCache)
INTERNAL:
Call this method if the uow will no longer used for committing transactions:
all the changes sets will be dereferenced, and (optionally) the cache cleared.
|
void |
commitRootUnitOfWork()
INTERNAL:
Commit the changes to any objects to the parent.
|
void |
commitTransaction()
INTERNAL:
This is internal to the uow, transactions should not be used explicitly in a uow.
|
void |
discoverUnregisteredNewObjects(java.util.Map clones,
java.util.Map newObjects,
java.util.Map unregisteredExistingObjects,
java.util.Map visitedObjects)
INTERNAL:
Traverse the object to find references to objects not registered in this unit of work.
|
java.util.Set<ClassDescriptor> |
getClassesToBeInvalidated()
INTERNAL:
Return classes that should be invalidated in the shared cache on commit.
|
UnitOfWorkChangeSet |
getCumulativeUOWChangeSet()
INTERNAL:
Get the final UnitOfWorkChangeSet for merge into the shared cache.
|
java.lang.String |
getFlushClearCache()
Return the FlashClearCache mode to be used.
|
java.lang.Object |
getUnregisteredDeletedCloneForOriginal(java.lang.Object original)
INTERNAL:
Called only by UnitOfWorkIdentityMapAccessor.getAndCloneCacheKeyFromParent method.
|
boolean |
isAfterWriteChangesButBeforeCommit()
INTERNAL:
Has writeChanges() been attempted on this UnitOfWork? It may have
either succeeded or failed but either way the UnitOfWork is in a highly
restricted state.
|
boolean |
isObjectDeleted(java.lang.Object object)
INTERNAL:
Return if the object has been deleted in this unit of work.
|
void |
issueSQLbeforeCompletion()
INTERNAL:
For synchronized units of work, dump SQL to database
|
boolean |
isWithinFlush()
Return whether we are already performing a flush() call
|
java.lang.Object |
mergeCloneWithReferences(java.lang.Object rmiClone,
MergeManager manager)
INTERNAL:
Merge the attributes of the clone into the unit of work copy.
|
java.lang.Object |
registerNewObject(java.lang.Object newObject)
ADVANCED:
Register the new object with the unit of work.
|
void |
rollbackTransaction()
INTERNAL:
This is internal to the uow, transactions should not be used explicitly in a uow.
|
void |
setCumulativeUOWChangeSet(UnitOfWorkChangeSet cumulativeUOWChangeSet)
INTERNAL:
Set the final UnitOfWorkChangeSet for merge into the shared cache.
|
void |
setDiscoverUnregisteredNewObjectsWithoutPersist(boolean discoverUnregisteredNewObjectsWithoutPersist) |
void |
setFlushClearCache(java.lang.String flushClearCache)
Set the FlashClearCache mode to be used.
|
void |
setShouldStoreByPassCache(boolean shouldStoreBypassCache) |
void |
setShouldTerminateTransaction(boolean shouldTerminateTransaction) |
boolean |
shouldClearForCloseOnRelease()
INTERNAL:
Indicates whether clearForClose method should be called by release method.
|
boolean |
shouldDiscoverUnregisteredNewObjectsWithoutPersist() |
boolean |
shouldForceReadFromDB(ObjectBuildingQuery query,
java.lang.Object primaryKey)
INTERNAL:
Calculate whether we should read directly from the database to the UOW.
|
boolean |
shouldStoreBypassCache()
INTERNAL:
Returns true if the UOW should bypass any updated to the shared cache
during the merge.
|
void |
synchronizeAndResume()
INTERNAL
Synchronize the clones and update their backup copies.
|
void |
updateChangeTrackersIfRequired(java.lang.Object objectToWrite,
ObjectChangeSet changeSetToWrite,
UnitOfWorkImpl uow,
ClassDescriptor descriptor)
INTERNAL:
This method is used internally to update the tracked objects if required
|
boolean |
wasDeleted(java.lang.Object original)
INTERNAL:
Return if the object was deleted previously (in a flush).
|
void |
writeChanges()
INTERNAL:
This will flush all changes to the database,
and create or merge into the cumulativeUOWChangeSet.
|
acquireHistoricalSession, acquireUnitOfWork, addDeletedPrivateOwnedObjects, addDeletionDependency, addNewAggregate, addObjectDeletedDuringCommit, addPessimisticLockedClone, addPrivateOwnedObject, addReadOnlyClass, addReadOnlyClasses, addRemovedObject, addToChangeTrackedHardList, afterExternalTransactionRollback, assignSequenceNumber, assignSequenceNumber, assignSequenceNumbers, beginEarlyTransaction, beginTransaction, buildOriginal, calculateChanges, checkExistence, checkForUnregisteredExistingObject, checkIfAlreadyRegistered, cloneAndRegisterObject, cloneAndRegisterObject, collectAndPrepareObjectsForNestedMerge, commit, commitAndResume, commitAndResumeOnFailure, commitAndResumeWithPreBuiltChangeSet, commitRootUnitOfWorkWithPreBuiltChangeSet, commitTransactionAfterWriteChanges, copyReadOnlyClasses, createCloneQueryValueHolder, createCloneTransformationValueHolder, deepMergeClone, deepRevertObject, deepUnregisterObject, discoverAndPersistUnregisteredNewObjects, dontPerformValidation, executeCall, forceUpdateToVersionField, getAccessor, getAccessors, getAccessors, getActiveUnitOfWork, getAllFromNewObjects, getBackupClone, getBackupClone, getBackupCloneForCommit, getBackupCloneForCommit, getBatchQueries, getCascadeDeleteObjects, getChangeTrackedHardList, getCloneMapping, getCloneToOriginals, getCommitManager, getCommitOrder, getContainerBeans, getContainerUnitOfWork, getCurrentChanges, getDefaultReadOnlyClasses, getDeletedObjects, getDeletionDependencies, getDeletionDependencies, getExecutionSession, getLifecycle, getMergeManager, getNewAggregates, getNewObjectsCloneToMergeOriginal, getNewObjectsCloneToOriginal, getNewObjectsInParentOriginalToClone, getNewObjectsOriginalToClone, getObjectFromNewObjects, getObjectFromNewObjects, getObjectsDeletedDuringCommit, getOptimisticReadLockObjects, getOriginalVersionOfNewObject, getOriginalVersionOfObject, getOriginalVersionOfObjectOrNull, getOriginalVersionOfObjectOrNull, getParent, getParentIdentityMapSession, getPessimisticLockedObjects, getPlatform, getProperty, getQuery, getQuery, getReadOnlyClasses, getReference, getReferenceMode, getSequencing, getServerPlatform, getSessionTypeString, getShouldThrowConformExceptions, getState, getTransaction, getUnitOfWorkChangeSet, getUnregisteredExistingObjects, getValidationLevel, hasCascadeDeleteObjects, hasChanges, hasCloneMapping, hasContainerBeans, hasDeletedObjects, hasNewObjects, hasOptimisticReadLockObjects, hasPessimisticLockedObjects, hasPrivateOwnedObjects, hasUnregisteredNewObjects, initializeIdentityMapAccessor, internalExecuteQuery, internalRegisterObject, isActive, isClassReadOnly, isCloneNewObject, isCloneNewObjectFromParent, isCommitPending, isConsideredInvalid, isDead, isInTransaction, isMergePending, isNestedUnitOfWork, isNewObjectInParent, isObjectNew, isObjectRegistered, isOriginalNewObject, isPessimisticLocked, isPreDeleteComplete, isSmartMerge, issueSQLbeforeCompletion, isUnitOfWork, isUnregisteredExistingObject, isUnregisteredNewObjectInParent, mergeClone, mergeClone, mergeClonesAfterCompletion, mergeCloneWithReferences, mergeCloneWithReferences, mergeCloneWithReferences, newInstance, performFullValidation, performPartialValidation, performRemove, performRemovePrivateOwnedObjectFromChangeSet, printRegisteredObjects, processDeleteObjectQuery, registerAllObjects, registerAllObjects, registerExistingObject, registerExistingObject, registerExistingObject, registerNewContainerBean, registerNewContainerBeanForCMP, registerNewObjectForPersist, registerObject, registerOriginalNewObjectFromNestedUnitOfWork, registerWithTransactionIfRequired, release, releaseJTSConnection, releaseReadConnection, releaseWriteLocks, removeAllReadOnlyClasses, removeForceUpdateToVersionField, removePrivateOwnedObject, removeReadOnlyClass, resumeUnitOfWork, retryQuery, revertAndResume, revertObject, revertObject, scanForConformingInstances, setBatchQueries, setCommitOrder, setDead, setMergeManager, setObjectsDeletedDuringCommit, setParent, setPendingMerge, setPreDeleteComplete, setReadOnlyClasses, setResumeUnitOfWorkOnTransactionCompletion, setShouldCascadeCloneToJoinedRelationship, setShouldDiscoverNewObjects, setShouldNewObjectsBeCached, setShouldOrderUpdates, setShouldPerformDeletesFirst, setShouldThrowConformExceptions, setShouldValidateExistence, setSmartMerge, setSynchronized, setTransaction, setUnitOfWorkChangeSet, setValidationLevel, setWasNonObjectLevelModifyQueryExecuted, setWasTransactionBegunPrematurely, shallowMergeClone, shallowRevertObject, shallowUnregisterObject, shouldCascadeCloneToJoinedRelationship, shouldDiscoverNewObjects, shouldNewObjectsBeCached, shouldOrderUpdates, shouldPerformDeletesFirst, shouldPerformFullValidation, shouldPerformNoValidation, shouldPerformPartialValidation, shouldReadFromDB, shouldResumeUnitOfWorkOnTransactionCompletion, shouldValidateExistence, storeDeferredModifyAllQuery, storeModifyAllQuery, unregisterObject, unregisterObject, unregisterObject, validateObjectSpace, verifyMutexThreadIntegrityBeforeRelease, wasNonObjectLevelModifyQueryExecuted, wasTransactionBegunPrematurely, writesCompletedacquireNonSynchronizedUnitOfWork, acquireNonSynchronizedUnitOfWork, acquireRepeatableWriteUnitOfWork, acquireUnitOfWork, addAlias, addJPAQuery, addJPATablePerTenantQuery, addMultitenantContextProperty, addQuery, addQuery, addStaticMetamodelClass, basicExecuteCall, beginExternalTransaction, checkAndRefreshInvalidObject, cleanUpEntityListenerInjectionManager, clearDescriptors, clearIntegrityChecker, clearLastDescriptorAccessed, clearProfile, clone, commitExternalTransaction, compareObjects, compareObjectsDontMatch, config, containsQuery, copy, copy, copyDescriptorNamedQueries, copyDescriptorsFromProject, copyInternal, copyObject, copyObject, createEntityListenerInjectionManager, createProtectedInstanceFromCachedData, deferEvent, deleteAllObjects, deleteAllObjects, deleteObject, doesObjectExist, dontLogMessages, endOperationProfile, endOperationProfile, executeDeferredEvents, executeNonSelectingCall, executeNonSelectingSQL, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeSelectingCall, executeSQL, fine, finer, finest, getActiveCommandThreads, getActiveSession, getAliasDescriptors, getAllQueries, getAsOfClause, getAttributeGroups, getBroker, getClassDescriptor, getClassDescriptor, getClassDescriptorForAlias, getCommandManager, getDatasourceLogin, getDatasourcePlatform, getDefaultReferenceMode, getDescriptor, getDescriptor, getDescriptorForAlias, getDescriptors, getEntityListenerInjectionManager, getEventManager, getExceptionHandler, getExceptionHandlerClass, getExternalTransactionController, getId, getIdentityMapAccessor, getIdentityMapAccessorInstance, getIntegrityChecker, getJPAQueries, getJPATablePerTenantQueries, getLoader, getLog, getLogin, getLogLevel, getLogLevel, getLogSessionString, getMappedSuperclass, getMultitenantContextProperties, getName, getNextQueryId, getNextSequenceNumberValue, getNumberOfActiveUnitsOfWork, getParentIdentityMapSession, getParentIdentityMapSession, getPartitioningPolicy, getPessimisticLockTimeoutDefault, getPlatform, getProfiler, getProject, getProperties, getQueries, getQuery, getQuery, getQueryBuilder, getQueryTimeoutDefault, getRefreshMetadataListener, getRootSession, getSerializer, getSessionForClass, getSessionForName, getSessionLog, getStaticMetamodelClass, getTablePerTenantDescriptors, getTablePerTenantQueries, getTransactionMutex, handleException, handleSevere, hasBroker, hasCommitManager, hasDescriptor, hasEventManager, hasExceptionHandler, hasExternalTransactionController, hasProperties, hasTablePerTenantDescriptors, hasTablePerTenantQueries, incrementProfile, incrementProfile, info, insertObject, isBroker, isClassReadOnly, isClientSession, isConcurrent, isConnected, isDatabaseSession, isDistributedSession, isExclusiveConnectionRequired, isExclusiveIsolatedClientSession, isFinalizersEnabled, isHistoricalSession, isInBroker, isInProfile, isIsolatedClientSession, isJPAQueriesProcessed, isLoggingOff, isProtectedSession, isRemoteSession, isRemoteUnitOfWork, isServerSession, isSessionBroker, isSynchronized, keyFromObject, keyFromObject, load, load, log, log, log, log, log, log, log, log, log, log, logMessage, logMessage, logThrowable, postAcquireConnection, prepareDatabaseQuery, preReleaseConnection, priviledgedExecuteNonSelectingCall, priviledgedExecuteSelectingCall, processCommand, processJPAQueries, readAllObjects, readAllObjects, readAllObjects, readAllObjects, readObject, readObject, readObject, readObject, readObject, refreshAndLockObject, refreshAndLockObject, refreshObject, registerFinalizer, releaseConnectionAfterCall, releaseUnitOfWork, removeProperty, removeQuery, removeQuery, retrieveCacheKey, retryTransaction, setAccessor, setBroker, setCommandManager, setCommitManager, setDatasourceLogin, setDefaultReferenceMode, setEntityListenerInjectionManager, setEventManager, setExceptionHandler, setExternalTransactionController, setIntegrityChecker, setIsConcurrent, setIsFinalizersEnabled, setIsInBroker, setIsInProfile, setJPAQueriesProcessed, setLog, setLoggingOff, setLogin, setLogin, setLogLevel, setName, setPartitioningPolicy, setPessimisticLockTimeoutDefault, setProfiler, setProject, setProperties, setProperty, setQueries, setQueryBuilder, setQueryTimeoutDefault, setRefreshMetadataListener, setSerializer, setSessionLog, setShouldOptimizeResultSetAccess, setShouldPropagateChanges, setTolerateInvalidJPQL, setWasJTSTransactionInternallyStarted, severe, shouldDisplayData, shouldLog, shouldLogMessages, shouldLogMessages, shouldOptimizeResultSetAccess, shouldPropagateChanges, shouldTolerateInvalidJPQL, startOperationProfile, startOperationProfile, toString, unwrapObject, updateObject, updateProfile, updateTablePerTenantDescriptors, validateCache, validateQuery, verifyDelete, warning, wasJTSTransactionInternallyStarted, wrapObject, writeObjectequals, getClass, hashCode, notify, notifyAll, wait, wait, waitdeleteAllObjects, deleteObject, isClassReadOnly, refreshAndLockObject, refreshAndLockObjectacquireUnitOfWork, addJPAQuery, addQuery, clearIntegrityChecker, clearProfile, containsQuery, copy, copy, copyObject, copyObject, doesObjectExist, dontLogMessages, executeNonSelectingCall, executeNonSelectingSQL, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeSelectingCall, executeSQL, getActiveSession, getAsOfClause, getClassDescriptor, getClassDescriptor, getClassDescriptorForAlias, getDatasourceLogin, getDatasourcePlatform, getDefaultReferenceMode, getDescriptor, getDescriptor, getDescriptorForAlias, getDescriptors, getEventManager, getExceptionHandler, getExternalTransactionController, getId, getIdentityMapAccessor, getIntegrityChecker, getJPAQueries, getLog, getLogin, getLogLevel, getLogLevel, getName, getNextSequenceNumberValue, getPartitioningPolicy, getPlatform, getProfiler, getProject, getProperties, getQueries, getQuery, getSerializer, getSessionLog, handleException, handleSevere, hasDescriptor, hasExceptionHandler, hasExternalTransactionController, isClientSession, isConnected, isDatabaseSession, isDistributedSession, isFinalizersEnabled, isInProfile, isRemoteSession, isRemoteUnitOfWork, isServerSession, isSessionBroker, keyFromObject, log, logMessage, readAllObjects, readAllObjects, readAllObjects, readObject, readObject, readObject, readObject, refreshObject, removeProperty, removeQuery, setDefaultReferenceMode, setExceptionHandler, setExternalTransactionController, setIntegrityChecker, setIsFinalizersEnabled, setLog, setLogLevel, setName, setPartitioningPolicy, setProfiler, setProperty, setQueryTimeoutDefault, setSerializer, setSessionLog, shouldLog, shouldLogMessages, validateCachepublic RepeatableWriteUnitOfWork()
public RepeatableWriteUnitOfWork(AbstractSession parentSession, ReferenceMode referenceMode)
public boolean shouldDiscoverUnregisteredNewObjectsWithoutPersist()
public void setDiscoverUnregisteredNewObjectsWithoutPersist(boolean discoverUnregisteredNewObjectsWithoutPersist)
discoverUnregisteredNewObjectsWithoutPersist - the discoverUnregisteredNewObjectsWithoutPersist to setpublic void clear(boolean shouldClearCache)
clear in class UnitOfWorkImplpublic void clearForClose(boolean shouldClearCache)
clearForClose in class UnitOfWorkImplpublic java.util.Set<ClassDescriptor> getClassesToBeInvalidated()
public UnitOfWorkChangeSet getCumulativeUOWChangeSet()
public void setCumulativeUOWChangeSet(UnitOfWorkChangeSet cumulativeUOWChangeSet)
public boolean shouldForceReadFromDB(ObjectBuildingQuery query, java.lang.Object primaryKey)
shouldForceReadFromDB in class UnitOfWorkImplRepeatableWriteUnitOfWorkpublic boolean shouldClearForCloseOnRelease()
shouldClearForCloseOnRelease in class UnitOfWorkImplpublic boolean shouldStoreBypassCache()
shouldStoreBypassCache in class UnitOfWorkImplRepeatableWriteUnitOfWork.public void commitRootUnitOfWork()
throws DatabaseException,
OptimisticLockException
commitRootUnitOfWork in class UnitOfWorkImplDatabaseExceptionOptimisticLockExceptionpublic void discoverUnregisteredNewObjects(java.util.Map clones,
java.util.Map newObjects,
java.util.Map unregisteredExistingObjects,
java.util.Map visitedObjects)
discoverUnregisteredNewObjects in class UnitOfWorkImplpublic boolean isAfterWriteChangesButBeforeCommit()
isAfterWriteChangesButBeforeCommit in class UnitOfWorkImplpublic boolean isObjectDeleted(java.lang.Object object)
isObjectDeleted in class UnitOfWorkImplpublic void issueSQLbeforeCompletion()
issueSQLbeforeCompletion in class UnitOfWorkImplpublic java.lang.Object mergeCloneWithReferences(java.lang.Object rmiClone,
MergeManager manager)
mergeCloneWithReferences in class UnitOfWorkImplUnitOfWorkImpl.shallowMergeClone(Object),
UnitOfWorkImpl.deepMergeClone(Object)public void updateChangeTrackersIfRequired(java.lang.Object objectToWrite,
ObjectChangeSet changeSetToWrite,
UnitOfWorkImpl uow,
ClassDescriptor descriptor)
updateChangeTrackersIfRequired in class UnitOfWorkImplpublic void writeChanges()
writeChanges in interface UnitOfWorkwriteChanges in class UnitOfWorkImplpublic java.lang.Object registerNewObject(java.lang.Object newObject)
registerNewObject in interface UnitOfWorkregisterNewObject in class UnitOfWorkImplUnitOfWorkImpl.registerObject(Object)public void rollbackTransaction()
throws DatabaseException
rollbackTransaction in class UnitOfWorkImplDatabaseException - if the database connection is lost or the rollback fails.public void synchronizeAndResume()
synchronizeAndResume in class UnitOfWorkImplpublic boolean wasDeleted(java.lang.Object original)
wasDeleted in class UnitOfWorkImplpublic java.lang.Object getUnregisteredDeletedCloneForOriginal(java.lang.Object original)
public void commitTransaction()
throws DatabaseException
commitTransaction in class UnitOfWorkImplDatabaseException - most databases validate changes as they are done,
normally errors do not occur on commit unless the disk fails or the connection is lost.public void setShouldStoreByPassCache(boolean shouldStoreBypassCache)
public void setShouldTerminateTransaction(boolean shouldTerminateTransaction)
public void clearFlushClearCache()
public java.lang.String getFlushClearCache()
FlushClearCachepublic void setFlushClearCache(java.lang.String flushClearCache)
FlushClearCachepublic boolean isWithinFlush()
EclipseLink 2.6.3, "build v20160428-59c81c5" API Reference