Purpose: In certain cases the contents of a relationship may be retrievable from a cache. This ValueHolder instance provides the mechanism to store a cached relationship and to load that relationship from a cache. This functionality requires that the persistent identities of the targets can be collected as database type foreign key queries are unavailable.
| Modifier and Type | Field and Description |
|---|---|
| protected transient ForeignReferenceMapping | |
| protected Object[] | |
| protected boolean | shouldAllowInstantiationDeferral
Setting to force the instantiation of the Collection on modification |
| Access | Constructor and Description |
|---|---|
| public | CacheBasedValueHolder(Object[] pks, AbstractRecord foreignKeys, AbstractSession session, ForeignReferenceMapping mapping)
|
| Modifier and Type | Method and Description |
|---|---|
| public Object[] | |
| public T | getValue(UnitOfWorkImpl uow)
Overrides org. |
| protected T | instantiate()
Implements abstract org. |
| protected T | |
| public T | instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder<T> unitOfWorkValueHolder)
Implements abstract org. |
| public boolean | isPessimisticLockingValueHolder()
Implements abstract org. |
| public void | setShouldAllowInstantiationDeferral(boolean shouldAllowInstantiationDeferral)
Set if instantiation deferral on modification should be available. |
| public boolean | shouldAllowInstantiationDeferral()
Overrides org. Implements org. |
| mapping | back to summary |
|---|---|
| protected transient ForeignReferenceMapping mapping | |
| references | back to summary |
|---|---|
| protected Object[] references | |
| shouldAllowInstantiationDeferral | back to summary |
|---|---|
| protected boolean shouldAllowInstantiationDeferral Setting to force the instantiation of the Collection on modification | |
| CacheBasedValueHolder | back to summary |
|---|---|
| public CacheBasedValueHolder(Object[] pks, AbstractRecord foreignKeys, AbstractSession session, ForeignReferenceMapping mapping) | |
| getCachedPKs | back to summary |
|---|---|
| public Object[] getCachedPKs() | |
| getValue | back to summary |
|---|---|
| public T getValue(UnitOfWorkImpl uow) Overrides org. Process against the UOW and attempt to load a local copy before going to the shared cache If null is returned then the calling UOW will instantiate as normal.
| |
| instantiate | back to summary |
|---|---|
| protected T instantiate() throws DatabaseException Implements abstract org. Doc from org. Instantiate the object.
| |
| instantiate | back to summary |
|---|---|
protected T instantiate(AbstractSession localSession) throws DatabaseException
| |
| instantiateForUnitOfWorkValueHolder | back to summary |
|---|---|
| public T instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder<T> unitOfWorkValueHolder) Implements abstract org. Triggers UnitOfWork valueholders directly without triggering the wrapped valueholder (this). When in transaction and/or for pessimistic locking the UnitOfWorkValueHolder needs to be triggered directly without triggering the wrapped valueholder. However only the wrapped valueholder knows how to trigger the indirection, i.e. it may be a batchValueHolder, and it stores all the info like the row and the query. Note This method is not thread-safe. It must be used in a synchronized manner
| |
| isPessimisticLockingValueHolder | back to summary |
|---|---|
| public boolean isPessimisticLockingValueHolder() Implements abstract org. Doc from org. Answers if this valueholder is a pessimistic locking one. Such valueholders are special in that they can be triggered multiple times by different UnitsOfWork. Each time a lock query will be issued. Hence even if instantiated it may have to be instantiated again, and once instantiated all fields can not be reset. Note Implementations of this method are not necessarily thread-safe. They must be used in a synchronizaed manner
| |
| setShouldAllowInstantiationDeferral | back to summary |
|---|---|
| public void setShouldAllowInstantiationDeferral(boolean shouldAllowInstantiationDeferral) Set if instantiation deferral on modification should be available. | |
| shouldAllowInstantiationDeferral | back to summary |
|---|---|
| public boolean shouldAllowInstantiationDeferral() Overrides org. Implements org. INTERNAL: Return if add/remove should trigger instantiation or avoid. Current instantiation is avoided is using change tracking.
| |