Package org.hibernate.reactive.engine
Class ReactiveActionQueue
- java.lang.Object
-
- org.hibernate.reactive.engine.ReactiveActionQueue
-
public class ReactiveActionQueue extends Object
A reactive counterpart toActionQueue
, where DML operations are queued before execution during a flush.
-
-
Constructor Summary
Constructors Constructor Description ReactiveActionQueue(ReactiveSession session)
Constructs an action queue bound to the given session.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAction(BulkOperationCleanupAction action)
Adds an action defining a cleanup relating to a bulk operation (HQL/JPQL or Criteria based update/delete)void
addAction(org.hibernate.reactive.engine.impl.QueuedOperationCollectionAction action)
Adds an action relating to a collection queued operation (extra lazy).void
addAction(org.hibernate.reactive.engine.impl.ReactiveCollectionRecreateAction action)
Adds a collection (re)create actionvoid
addAction(org.hibernate.reactive.engine.impl.ReactiveCollectionRemoveAction action)
Adds a collection remove actionvoid
addAction(org.hibernate.reactive.engine.impl.ReactiveCollectionUpdateAction action)
Adds a collection update actionvoid
addAction(org.hibernate.reactive.engine.impl.ReactiveEntityDeleteAction action)
Adds an entity delete actionCompletionStage<Void>
addAction(org.hibernate.reactive.engine.impl.ReactiveEntityInsertAction action)
Adds an entity (REGULAR) insert actionvoid
addAction(org.hibernate.reactive.engine.impl.ReactiveEntityUpdateAction action)
Adds an entity update actionvoid
addAction(org.hibernate.reactive.engine.impl.ReactiveOrphanRemovalAction action)
Adds an orphan removal actionCompletionStage<Void>
afterTransactionCompletion(boolean success)
Performs cleanup of any held cache softlocks.boolean
areInsertionsOrDeletionsQueued()
Check whether any insertion or deletion actions are currently queued.boolean
areTablesToBeUpdated(Set tables)
Check whether the given tables/query-spaces are to be executed against given the currently queued actions.CompletionStage<Void>
beforeTransactionCompletion()
Execute any registeredBeforeTransactionCompletionProcess
void
checkNoUnresolvedActionsAfterOperation()
ThrowsPropertyValueException
if there are any unresolved entity insert actions that depend on non-nullable associations with a transient entity.void
clear()
void
clearFromFlushNeededCheck(int previousCollectionRemovalSize)
<E extends ReactiveExecutable>
CompletionStage<Void>execute(E executable)
CompletionStage<Void>
executeActions()
Perform all currently queued actions.CompletionStage<Void>
executeInserts()
Perform all currently queued entity-insertion actions.boolean
hasAfterTransactionActions()
boolean
hasAnyQueuedActions()
boolean
hasBeforeTransactionActions()
boolean
hasUnresolvedEntityInsertActions()
Are there unresolved entity insert actions that depend on non-nullable associations with a transient entity?int
numberOfCollectionCreations()
int
numberOfCollectionRemovals()
int
numberOfCollectionUpdates()
int
numberOfDeletions()
int
numberOfInsertions()
int
numberOfUpdates()
void
prepareActions()
Prepares the internal action queues for execution.void
registerProcess(AfterTransactionCompletionProcess process)
void
registerProcess(BeforeTransactionCompletionProcess process)
void
registerProcess(ReactiveAfterTransactionCompletionProcess process)
void
registerProcess(ReactiveBeforeTransactionCompletionProcess process)
void
sortActions()
void
sortCollectionActions()
String
toString()
Returns a string representation of the object.void
unScheduleDeletion(EntityEntry entry, Object rescuedEntity)
-
-
-
Constructor Detail
-
ReactiveActionQueue
public ReactiveActionQueue(ReactiveSession session)
Constructs an action queue bound to the given session.- Parameters:
session
- The session "owning" this queue.
-
-
Method Detail
-
clear
public void clear()
-
addAction
public CompletionStage<Void> addAction(org.hibernate.reactive.engine.impl.ReactiveEntityInsertAction action)
Adds an entity (REGULAR) insert action- Parameters:
action
- The action representing the entity insertion
-
addAction
public void addAction(org.hibernate.reactive.engine.impl.ReactiveEntityDeleteAction action)
Adds an entity delete action- Parameters:
action
- The action representing the entity deletion
-
addAction
public void addAction(org.hibernate.reactive.engine.impl.ReactiveOrphanRemovalAction action)
Adds an orphan removal action- Parameters:
action
- The action representing the orphan removal
-
addAction
public void addAction(org.hibernate.reactive.engine.impl.ReactiveEntityUpdateAction action)
Adds an entity update action- Parameters:
action
- The action representing the entity update
-
addAction
public void addAction(org.hibernate.reactive.engine.impl.ReactiveCollectionRecreateAction action)
Adds a collection (re)create action- Parameters:
action
- The action representing the (re)creation of a collection
-
addAction
public void addAction(org.hibernate.reactive.engine.impl.ReactiveCollectionRemoveAction action)
Adds a collection remove action- Parameters:
action
- The action representing the removal of a collection
-
addAction
public void addAction(org.hibernate.reactive.engine.impl.ReactiveCollectionUpdateAction action)
Adds a collection update action- Parameters:
action
- The action representing the update of a collection
-
addAction
public void addAction(org.hibernate.reactive.engine.impl.QueuedOperationCollectionAction action)
Adds an action relating to a collection queued operation (extra lazy).- Parameters:
action
- The action representing the queued operation
-
addAction
public void addAction(BulkOperationCleanupAction action)
Adds an action defining a cleanup relating to a bulk operation (HQL/JPQL or Criteria based update/delete)- Parameters:
action
- The action representing the queued operation
-
hasUnresolvedEntityInsertActions
public boolean hasUnresolvedEntityInsertActions()
Are there unresolved entity insert actions that depend on non-nullable associations with a transient entity?- Returns:
- true, if there are unresolved entity insert actions that depend on non-nullable associations with a transient entity; false, otherwise
-
checkNoUnresolvedActionsAfterOperation
public void checkNoUnresolvedActionsAfterOperation() throws PropertyValueException
ThrowsPropertyValueException
if there are any unresolved entity insert actions that depend on non-nullable associations with a transient entity. This method should be called on completion of an operation (after all cascades are completed) that saves an entity.- Throws:
PropertyValueException
- if there are any unresolved entity insert actions;PropertyValueException.getEntityName()
andPropertyValueException.getPropertyName()
will return the entity name and property value for the first unresolved entity insert action.
-
registerProcess
public void registerProcess(AfterTransactionCompletionProcess process)
-
registerProcess
public void registerProcess(BeforeTransactionCompletionProcess process)
-
registerProcess
public void registerProcess(ReactiveAfterTransactionCompletionProcess process)
-
registerProcess
public void registerProcess(ReactiveBeforeTransactionCompletionProcess process)
-
executeInserts
public CompletionStage<Void> executeInserts()
Perform all currently queued entity-insertion actions.- Throws:
HibernateException
- error executing queued insertion actions.
-
executeActions
public CompletionStage<Void> executeActions()
Perform all currently queued actions.- Throws:
HibernateException
- error executing queued actions.
-
prepareActions
public void prepareActions() throws HibernateException
Prepares the internal action queues for execution.- Throws:
HibernateException
- error preparing actions.
-
afterTransactionCompletion
public CompletionStage<Void> afterTransactionCompletion(boolean success)
Performs cleanup of any held cache softlocks.- Parameters:
success
- Was the transaction successful.
-
beforeTransactionCompletion
public CompletionStage<Void> beforeTransactionCompletion()
Execute any registeredBeforeTransactionCompletionProcess
-
areInsertionsOrDeletionsQueued
public boolean areInsertionsOrDeletionsQueued()
Check whether any insertion or deletion actions are currently queued.- Returns:
true
if insertions or deletions are currently queued;false
otherwise.
-
areTablesToBeUpdated
public boolean areTablesToBeUpdated(Set tables)
Check whether the given tables/query-spaces are to be executed against given the currently queued actions.- Parameters:
tables
- The table/query-spaces to check.- Returns:
true
if we contain pending actions against any of the given tables;false
otherwise.
-
execute
public <E extends ReactiveExecutable> CompletionStage<Void> execute(E executable)
- Parameters:
executable
- The action to execute
-
toString
public String toString()
Returns a string representation of the object.
-
numberOfCollectionRemovals
public int numberOfCollectionRemovals()
-
numberOfCollectionUpdates
public int numberOfCollectionUpdates()
-
numberOfCollectionCreations
public int numberOfCollectionCreations()
-
numberOfDeletions
public int numberOfDeletions()
-
numberOfUpdates
public int numberOfUpdates()
-
numberOfInsertions
public int numberOfInsertions()
-
sortCollectionActions
public void sortCollectionActions()
-
sortActions
public void sortActions()
-
clearFromFlushNeededCheck
public void clearFromFlushNeededCheck(int previousCollectionRemovalSize)
-
hasAfterTransactionActions
public boolean hasAfterTransactionActions()
-
hasBeforeTransactionActions
public boolean hasBeforeTransactionActions()
-
hasAnyQueuedActions
public boolean hasAnyQueuedActions()
-
unScheduleDeletion
public void unScheduleDeletion(EntityEntry entry, Object rescuedEntity)
-
-