public class RepeatableWriteUnitOfWork extends UnitOfWorkImpl
UnitOfWork.CommitOrderType
AfterExternalTransactionRolledBack, Birth, CommitPending, CommitTransactionPending, Death, DO_NOT_THROW_CONFORM_EXCEPTIONS, Full, LOCK_QUERIES_PROPERTY, MergePending, None, Partial, ReadLockOnly, ReadLockUpdateVersion, THROW_ALL_CONFORM_EXCEPTIONS, WriteChangesFailed
LOG_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, writesCompleted
acquireNonSynchronizedUnitOfWork, 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, writeObject
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
deleteAllObjects, deleteObject, isClassReadOnly, refreshAndLockObject, refreshAndLockObject
acquireUnitOfWork, 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, validateCache
public 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 UnitOfWorkImpl
public void clearForClose(boolean shouldClearCache)
clearForClose
in class UnitOfWorkImpl
public 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 UnitOfWorkImpl
RepeatableWriteUnitOfWork
public boolean shouldClearForCloseOnRelease()
shouldClearForCloseOnRelease
in class UnitOfWorkImpl
public boolean shouldStoreBypassCache()
shouldStoreBypassCache
in class UnitOfWorkImpl
RepeatableWriteUnitOfWork.
public void commitRootUnitOfWork() throws DatabaseException, OptimisticLockException
commitRootUnitOfWork
in class UnitOfWorkImpl
DatabaseException
OptimisticLockException
public void discoverUnregisteredNewObjects(java.util.Map clones, java.util.Map newObjects, java.util.Map unregisteredExistingObjects, java.util.Map visitedObjects)
discoverUnregisteredNewObjects
in class UnitOfWorkImpl
public boolean isAfterWriteChangesButBeforeCommit()
isAfterWriteChangesButBeforeCommit
in class UnitOfWorkImpl
public boolean isObjectDeleted(java.lang.Object object)
isObjectDeleted
in class UnitOfWorkImpl
public void issueSQLbeforeCompletion()
issueSQLbeforeCompletion
in class UnitOfWorkImpl
public java.lang.Object mergeCloneWithReferences(java.lang.Object rmiClone, MergeManager manager)
mergeCloneWithReferences
in class UnitOfWorkImpl
UnitOfWorkImpl.shallowMergeClone(Object)
,
UnitOfWorkImpl.deepMergeClone(Object)
public void updateChangeTrackersIfRequired(java.lang.Object objectToWrite, ObjectChangeSet changeSetToWrite, UnitOfWorkImpl uow, ClassDescriptor descriptor)
updateChangeTrackersIfRequired
in class UnitOfWorkImpl
public void writeChanges()
writeChanges
in interface UnitOfWork
writeChanges
in class UnitOfWorkImpl
public java.lang.Object registerNewObject(java.lang.Object newObject)
registerNewObject
in interface UnitOfWork
registerNewObject
in class UnitOfWorkImpl
UnitOfWorkImpl.registerObject(Object)
public void rollbackTransaction() throws DatabaseException
rollbackTransaction
in class UnitOfWorkImpl
DatabaseException
- if the database connection is lost or the rollback fails.public void synchronizeAndResume()
synchronizeAndResume
in class UnitOfWorkImpl
public boolean wasDeleted(java.lang.Object original)
wasDeleted
in class UnitOfWorkImpl
public java.lang.Object getUnregisteredDeletedCloneForOriginal(java.lang.Object original)
public void commitTransaction() throws DatabaseException
commitTransaction
in class UnitOfWorkImpl
DatabaseException
- 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()
FlushClearCache
public void setFlushClearCache(java.lang.String flushClearCache)
FlushClearCache
public boolean isWithinFlush()
EclipseLink 2.6.3, "build v20160428-59c81c5" API Reference