public class RepeatableWriteUnitOfWork extends UnitOfWorkImpl
Modifier and Type | Field and Description |
---|---|
protected UnitOfWorkChangeSet |
cumulativeUOWChangeSet
Used to store the final UnitOfWorkChangeSet for merge into the shared cache
|
protected boolean |
shouldClearForCloseInsteadOfResume
Used to determine if UnitOfWork.synchronizeAndResume method should
resume (the normal behaviour); or alternatively clear the UnitOfWork.
|
protected boolean |
shouldTerminateTransaction
Used to determine if UnitOfWork should commit and rollback transactions
This is used when an EntityTransaction is controlling the transaction
|
protected IdentityHashtable |
unregisteredDeletedObjectsCloneToBackupAndOriginal
Used to store objects already deleted from the db and unregistered
|
AfterExternalTransactionRolledBack, allClones, Birth, cloneDepth, cloneMapping, cloneToOriginals, CommitPending, CommitTransactionPending, Death, deferredModifyAllQueries, deletedObjects, DO_NOT_THROW_CONFORM_EXCEPTIONS, Full, isSynchronized, lastUsedMergeManager, lifecycle, LOCK_QUERIES_PROPERTY, MergePending, modifyAllQueries, newAggregates, newObjectsCloneToOriginal, newObjectsOriginalToClone, None, objectsDeletedDuringCommit, objectsLockedForClone, optimisticReadLockObjects, parent, Partial, pessimisticLockedObjects, readOnlyClasses, removedObjects, resumeOnTransactionCompletion, shouldCascadeCloneToJoinedRelationship, shouldCheckWriteLock, shouldNewObjectsBeCached, shouldPerformDeletesFirst, shouldThrowConformExceptions, SmartMerge, THROW_ALL_CONFORM_EXCEPTIONS, transaction, unitOfWorkChangeSet, unregisteredExistingObjects, unregisteredNewObjects, validationLevel, wasNonObjectLevelModifyQueryExecuted, wasTransactionBegunPrematurely, WriteChangesFailed
accessor, broker, commitManager, ejbqlPlaceHolderQueries, eventManager, exceptionHandler, externalTransactionController, identityMapAccessor, integrityChecker, isInProfile, lastDescriptorAccessed, logSessionString, name, numberOfActiveUnitsOfWork, platform, profiler, project, properties, queries, sessionLog, transactionMutex, wasJTSTransactionInternallyStarted
Constructor and Description |
---|
RepeatableWriteUnitOfWork(AbstractSession parentSession) |
Modifier and Type | Method and Description |
---|---|
void |
clearForClose(boolean shouldClearCache)
INTERNAL:
Call this method if the uow will no longer used for comitting 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.
|
protected void |
commitToDatabase(boolean commitTransaction)
INTERNAL:
Wraps the oracle.toplink.essentials.exceptions.OptimisticLockException in a
javax.persistence.OptimisticLockException.
|
void |
commitTransaction()
INTERNAL:
This is internal to the uow, transactions should not be used explictly in a uow.
|
void |
discoverUnregisteredNewObjects(Object clone,
IdentityHashtable knownNewObjects,
IdentityHashtable unregisteredExistingObjects,
IdentityHashtable visitedObjects)
INTERNAL:
Traverse the object to find references to objects not registered in this unit of work.
|
Object |
getUnregisteredDeletedCloneForOriginal(Object original)
INTERNAL:
Called only by UnitOfWorkIdentityMapAccessor.getAndCloneCacheKeyFromParent method.
|
boolean |
isAfterWriteChangesButBeforeCommit()
INTERNAL:
Has writeChanges() been attempted on this UnitOfWork? It may have
either suceeded or failed but either way the UnitOfWork is in a highly
restricted state.
|
boolean |
isObjectDeleted(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
|
Object |
mergeCloneWithReferences(Object rmiClone,
int cascadePolicy,
boolean forceCascade)
INTERNAL:
Merge the attributes of the clone into the unit of work copy.
|
protected void |
registerNotRegisteredNewObjectForPersist(Object newObject,
ClassDescriptor descriptor)
INTERNAL:
Called only by registerNewObjectForPersist method,
and only if newObject is not already registered.
|
void |
rollbackTransaction()
INTERNAL:
This is internal to the uow, transactions should not be used explictly in a uow.
|
void |
setShouldClearForCloseInsteadOfResume(boolean shouldClearForCloseInsteadOfResume) |
void |
setShouldTerminateTransaction(boolean shouldTerminateTransaction) |
boolean |
shouldClearForCloseInsteadOfResume() |
boolean |
shouldClearForCloseOnRelease()
INTERNAL:
Indicates whether clearForClose methor should be called by release method.
|
void |
synchronizeAndResume()
INTERNAL
Synchronize the clones and update their backup copies.
|
void |
updateChangeTrackersIfRequired(Object objectToWrite,
ObjectChangeSet changeSetToWrite,
UnitOfWorkImpl uow,
ClassDescriptor descriptor)
INTERNAL:
This method is used internally to update the tracked objects if required
|
void |
writeChanges()
INTERNAL:
This method will cause the all of the tracked objects at this level to have
their changes written to the database.
|
acquireUnitOfWork, addNewAggregate, addObjectDeletedDuringCommit, addPessimisticLockedClone, addReadOnlyClass, addReadOnlyClasses, addRemovedObject, afterTransaction, assignSequenceNumber, assignSequenceNumbers, basicPrintRegisteredObjects, beginEarlyTransaction, beginTransaction, buildOriginal, calculateChanges, canChangeReadOnlySet, checkExistence, checkForUnregisteredExistingObject, checkIfAlreadyRegistered, clear, cloneAndRegisterNewObject, cloneAndRegisterObject, collectAndPrepareObjectsForCommit, collectAndPrepareObjectsForNestedMerge, commit, commitAfterWriteChanges, commitAndResume, commitAndResumeAfterWriteChanges, commitAndResumeOnFailure, commitAndResumeWithPreBuiltChangeSet, commitInternallyStartedExternalTransaction, commitRootUnitOfWorkWithPreBuiltChangeSet, commitToDatabaseWithChangeSet, commitToDatabaseWithPreBuiltChangeSet, commitTransactionAfterWriteChanges, copyReadOnlyClasses, deepMergeClone, deepRevertObject, deepUnregisterObject, deleteAllObjects, discoverAllUnregisteredNewObjects, dontPerformValidation, executeCall, forceUpdateToVersionField, getAccessor, getAccessor, getAccessor, getActiveUnitOfWork, getAllClones, getAllFromNewObjects, getBackupClone, getBackupCloneForCommit, getCloneMapping, getCloneToOriginals, getCommitManager, getCurrentChanges, getDefaultReadOnlyClasses, getDeletedObjects, getDescriptorForAlias, getDescriptors, getExecutionSession, getLifecycle, getMergeManager, getNewAggregates, getNewObjectsCloneToOriginal, getNewObjectsOriginalToClone, getObjectFromNewObjects, getObjectFromNewObjects, getObjectsDeletedDuringCommit, getOptimisticReadLockObjects, getOriginalVersionOfNewObject, getOriginalVersionOfObject, getOriginalVersionOfObjectOrNull, getParent, getParentIdentityMapSession, getPessimisticLockedObjects, getPlatform, getQuery, getQuery, getReadOnlyClasses, getRemovedObjects, getSequencing, getServerPlatform, getSessionTypeString, getShouldThrowConformExceptions, getState, getTransaction, getUnitOfWorkChangeSet, getUnregisteredExistingObjects, getUnregisteredNewObjects, getValidationLevel, getWorkingCopyFromUnitOfWorkIdentityMap, hasChanges, hasCloneMapping, hasCloneToOriginals, hasDeferredModifyAllQueries, hasDeletedObjects, hasModifications, hasModifyAllQueries, hasNewObjects, hasObjectsDeletedDuringCommit, hasRemovedObjects, initializeIdentityMapAccessor, internalExecuteQuery, internalRegisterObject, isActive, isAfterWriteChangesFailed, isClassReadOnly, isCloneNewObject, isCommitPending, isDead, isInTransaction, isMergePending, isNestedUnitOfWork, isObjectNew, isObjectRegistered, isOriginalNewObject, isPessimisticLocked, isSmartMerge, issueModifyAllQueryList, issueSQLbeforeCompletion, isSynchronized, isUnitOfWork, mergeChangesIntoParent, mergeClone, mergeClone, mergeClonesAfterCompletion, mergeCloneWithReferences, mergeCloneWithReferences, newInstance, performFullValidation, performPartialValidation, performRemove, populateAndRegisterObject, postMergeChanges, preMergeChanges, printRegisteredObjects, processDeleteObjectQuery, registerAllObjects, registerAllObjects, registerExistingObject, registerExistingObject, registerExistingObject, registerNewObject, registerNewObject, registerNewObjectClone, registerNewObjectForPersist, registerNewObjectInIdentityMap, registerObject, registerObject, registerWithTransactionIfRequired, release, removeAllReadOnlyClasses, removeForceUpdateToVersionField, removeReadOnlyClass, resetAllCloneCollection, revertAndResume, revertObject, revertObject, rollbackTransaction, scanForConformingInstances, setAllClonesCollection, setCloneMapping, setDead, setDeletedObjects, setLifecycle, setMergeManager, setNewObjectsCloneToOriginal, setNewObjectsOriginalToClone, setObjectsDeletedDuringCommit, setParent, setPendingMerge, setReadOnlyClasses, setRemovedObjects, setResumeUnitOfWorkOnTransactionCompletion, setShouldCascadeCloneToJoinedRelationship, setShouldNewObjectsBeCached, setShouldPerformDeletesFirst, setShouldThrowConformExceptions, setSmartMerge, setSynchronized, setTransaction, setUnitOfWorkChangeSet, setUnregisteredExistingObjects, setUnregisteredNewObjects, setValidationLevel, setWasNonObjectLevelModifyQueryExecuted, setWasTransactionBegunPrematurely, shallowMergeClone, shallowRevertObject, shallowUnregisterObject, shouldCascadeCloneToJoinedRelationship, shouldNewObjectsBeCached, shouldPerformDeletesFirst, shouldPerformFullValidation, shouldPerformNoValidation, shouldPerformPartialValidation, shouldReadFromDB, shouldResumeUnitOfWorkOnTransactionCompletion, storeDeferredModifyAllQuery, storeModifyAllQuery, undeleteObject, unregisterObject, unregisterObject, validateObjectSpace, wasNonObjectLevelModifyQueryExecuted, wasTransactionBegunPrematurely, writesCompleted
acquireNonSynchronizedUnitOfWork, addAlias, addEjbqlPlaceHolderQuery, addQuery, addQuery, basicBeginTransaction, basicCommitTransaction, basicRollbackTransaction, beginExternalTransaction, clearIntegrityChecker, clearLastDescriptorAccessed, clearProfile, clone, commitExternalTransaction, compareObjects, compareObjectsDontMatch, config, containsQuery, copyObject, copyObject, deleteAllObjects, deleteObject, doesObjectExist, dontLogMessages, endOperationProfile, executeNonSelectingCall, executeNonSelectingSQL, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeSelectingCall, executeSQL, fine, finer, finest, getActiveSession, getAliasDescriptors, getAllQueries, getBroker, getClassDescriptor, getClassDescriptor, getClassDescriptorForAlias, getDatasourceLogin, getDatasourcePlatform, getDescriptor, getDescriptor, getEjbqlPlaceHolderQueries, getEventManager, getExceptionHandler, getExceptionHandlerClass, getExternalTransactionController, getIdentityMapAccessor, getIdentityMapAccessorInstance, getIntegrityChecker, getLog, getLogin, getLogLevel, getLogLevel, getLogSessionString, getName, getNextQueryId, getNextSequenceNumberValue, getNumberOfActiveUnitsOfWork, getParentIdentityMapSession, getPlatform, getProfiler, getProject, getProperties, getProperty, getQueries, getRootSession, getSessionForClass, getSessionLog, getTransactionMutex, handleException, handleSevere, hasBroker, hasDescriptor, hasExceptionHandler, hasExternalTransactionController, hasProperties, incrementProfile, info, insertObject, isBroker, isClassReadOnly, isClientSession, isConnected, isDatabaseSession, isDistributedSession, isInBroker, isInProfile, isRemoteSession, isRemoteUnitOfWork, isServerSession, isSessionBroker, keyFromObject, keyFromObject, log, log, log, log, log, log, log, log, log, log, logMessage, logThrowable, prepareDatabaseQuery, processEJBQLQueries, processEJBQLQueries, readAllObjects, readAllObjects, readAllObjects, readAllObjects, readObject, readObject, readObject, readObject, readObject, refreshAndLockObject, refreshAndLockObject, refreshObject, releaseUnitOfWork, removeProperty, removeQuery, removeQuery, rollbackExternalTransaction, setAccessor, setBroker, setCommitManager, setDatasourceLogin, setEventManager, setExceptionHandler, setExternalTransactionController, setIntegrityChecker, setIsInProfile, setLog, setLogin, setLogin, setLogLevel, setName, setNumberOfActiveUnitsOfWork, setProfiler, setProject, setProperties, setProperty, setQueries, setSessionLog, setTransactionMutex, setWasJTSTransactionInternallyStarted, severe, shouldLog, shouldLogMessages, startOperationProfile, toString, unwrapObject, updateObject, updateProfile, validateQuery, verifyDelete, warning, wasJTSTransactionInternallyStarted, wrapObject, writeAllObjects, writeAllObjectsWithChangeSet, writeObject
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
deleteAllObjects, deleteObject, isClassReadOnly, refreshAndLockObject, refreshAndLockObject
addEjbqlPlaceHolderQuery, addQuery, clearIntegrityChecker, clearProfile, containsQuery, copyObject, copyObject, doesObjectExist, dontLogMessages, executeNonSelectingCall, executeNonSelectingSQL, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeSelectingCall, executeSQL, getActiveSession, getClassDescriptor, getClassDescriptor, getClassDescriptorForAlias, getDatasourceLogin, getDatasourcePlatform, getDescriptor, getDescriptor, getEjbqlPlaceHolderQueries, getEventManager, getExceptionHandler, getExternalTransactionController, getIdentityMapAccessor, getIntegrityChecker, getLog, getLogin, getLogLevel, getLogLevel, getName, getNextSequenceNumberValue, getPlatform, getProfiler, getProject, getProperties, getProperty, getQueries, getSessionLog, handleException, handleSevere, hasDescriptor, hasExceptionHandler, hasExternalTransactionController, isClientSession, isConnected, isDatabaseSession, isDistributedSession, isInProfile, isRemoteSession, isRemoteUnitOfWork, isServerSession, isSessionBroker, keyFromObject, log, log, logMessage, logThrowable, readAllObjects, readAllObjects, readAllObjects, readObject, readObject, readObject, readObject, refreshObject, removeProperty, removeQuery, setExceptionHandler, setExternalTransactionController, setIntegrityChecker, setLog, setLogLevel, setName, setProfiler, setProperty, setSessionLog, shouldLog, shouldLogMessages
protected UnitOfWorkChangeSet cumulativeUOWChangeSet
protected IdentityHashtable unregisteredDeletedObjectsCloneToBackupAndOriginal
protected boolean shouldTerminateTransaction
protected boolean shouldClearForCloseInsteadOfResume
public RepeatableWriteUnitOfWork(AbstractSession parentSession)
public void clearForClose(boolean shouldClearCache)
clearForClose
in class UnitOfWorkImpl
public boolean shouldClearForCloseOnRelease()
shouldClearForCloseOnRelease
in class UnitOfWorkImpl
public void commitRootUnitOfWork() throws DatabaseException, OptimisticLockException
commitRootUnitOfWork
in class UnitOfWorkImpl
DatabaseException
OptimisticLockException
public void discoverUnregisteredNewObjects(Object clone, IdentityHashtable knownNewObjects, IdentityHashtable unregisteredExistingObjects, IdentityHashtable visitedObjects)
discoverUnregisteredNewObjects
in class UnitOfWorkImpl
public boolean isAfterWriteChangesButBeforeCommit()
isAfterWriteChangesButBeforeCommit
in class UnitOfWorkImpl
public boolean isObjectDeleted(Object object)
isObjectDeleted
in class UnitOfWorkImpl
public void issueSQLbeforeCompletion()
issueSQLbeforeCompletion
in class UnitOfWorkImpl
public Object mergeCloneWithReferences(Object rmiClone, int cascadePolicy, boolean forceCascade)
mergeCloneWithReferences
in class UnitOfWorkImpl
UnitOfWorkImpl.shallowMergeClone(Object)
,
UnitOfWorkImpl.deepMergeClone(Object)
public void updateChangeTrackersIfRequired(Object objectToWrite, ObjectChangeSet changeSetToWrite, UnitOfWorkImpl uow, ClassDescriptor descriptor)
updateChangeTrackersIfRequired
in class UnitOfWorkImpl
public void writeChanges()
writeChanges
in interface UnitOfWork
writeChanges
in class UnitOfWorkImpl
protected void registerNotRegisteredNewObjectForPersist(Object newObject, ClassDescriptor descriptor)
registerNotRegisteredNewObjectForPersist
in class UnitOfWorkImpl
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 Object getUnregisteredDeletedCloneForOriginal(Object original)
protected void commitToDatabase(boolean commitTransaction)
commitToDatabase
in class UnitOfWorkImpl
commitTransaction
- 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 setShouldTerminateTransaction(boolean shouldTerminateTransaction)
public void setShouldClearForCloseInsteadOfResume(boolean shouldClearForCloseInsteadOfResume)
public boolean shouldClearForCloseInsteadOfResume()
Copyright © 2023. All rights reserved.