Class ReactiveActionQueue

java.lang.Object
org.hibernate.reactive.engine.ReactiveActionQueue

public class ReactiveActionQueue extends Object
A reactive counterpart to ActionQueue, where DML operations are queued before execution during a flush.
  • Constructor Details

    • ReactiveActionQueue

      public ReactiveActionQueue(ReactiveSession session)
      Constructs an action queue bound to the given session.
      Parameters:
      session - The session "owning" this queue.
  • Method Details

    • clear

      public void clear()
    • addAction

      public CompletionStage<Void> addAction(ReactiveEntityInsertAction action)
      Adds an entity (REGULAR) insert action
      Parameters:
      action - The action representing the entity insertion
    • addAction

      public void addAction(ReactiveEntityDeleteAction action)
      Adds an entity delete action
      Parameters:
      action - The action representing the entity deletion
    • addAction

      public void addAction(ReactiveOrphanRemovalAction action)
      Adds an orphan removal action
      Parameters:
      action - The action representing the orphan removal
    • addAction

      public void addAction(ReactiveEntityUpdateAction action)
      Adds an entity update action
      Parameters:
      action - The action representing the entity update
    • addAction

      public void addAction(ReactiveCollectionRecreateAction action)
      Adds a collection (re)create action
      Parameters:
      action - The action representing the (re)creation of a collection
    • addAction

      public void addAction(ReactiveCollectionRemoveAction action)
      Adds a collection remove action
      Parameters:
      action - The action representing the removal of a collection
    • addAction

      public void addAction(ReactiveCollectionUpdateAction action)
      Adds a collection update action
      Parameters:
      action - The action representing the update of a collection
    • addAction

      public void addAction(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(org.hibernate.action.internal.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 org.hibernate.PropertyValueException
      Throws PropertyValueException 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:
      org.hibernate.PropertyValueException - if there are any unresolved entity insert actions; PropertyValueException.getEntityName() and PropertyValueException.getPropertyName() will return the entity name and property value for the first unresolved entity insert action.
    • registerProcess

      public void registerProcess(org.hibernate.action.spi.AfterTransactionCompletionProcess process)
    • registerProcess

      public void registerProcess(org.hibernate.action.spi.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:
      org.hibernate.HibernateException - error executing queued insertion actions.
    • executeActions

      public CompletionStage<Void> executeActions()
      Perform all currently queued actions.
      Throws:
      org.hibernate.HibernateException - error executing queued actions.
    • prepareActions

      public void prepareActions() throws org.hibernate.HibernateException
      Prepares the internal action queues for execution.
      Throws:
      org.hibernate.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 registered BeforeTransactionCompletionProcess
    • 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.
      Overrides:
      toString in class Object
      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(org.hibernate.engine.spi.EntityEntry entry, Object rescuedEntity)