Package org.hibernate.engine.spi

Examples of org.hibernate.engine.spi.ActionQueue$InsertActionSorter


    // Schedule updates to collections:

    LOG.trace( "Scheduling collection removes/(re)creates/updates" );

    ActionQueue actionQueue = session.getActionQueue();
    for ( Map.Entry<PersistentCollection,CollectionEntry> me :
      IdentityMap.concurrentEntries( (Map<PersistentCollection,CollectionEntry>) persistenceContext.getCollectionEntries() )) {
      PersistentCollection coll = me.getKey();
      CollectionEntry ce = me.getValue();

      if ( ce.isDorecreate() ) {
        session.getInterceptor().onCollectionRecreate( coll, ce.getCurrentKey() );
        actionQueue.addAction(
            new CollectionRecreateAction(
                coll,
                ce.getCurrentPersister(),
                ce.getCurrentKey(),
                session
              )
          );
      }
      if ( ce.isDoremove() ) {
        session.getInterceptor().onCollectionRemove( coll, ce.getLoadedKey() );
        actionQueue.addAction(
            new CollectionRemoveAction(
                coll,
                ce.getLoadedPersister(),
                ce.getLoadedKey(),
                ce.isSnapshotEmpty(coll),
                session
              )
          );
      }
      if ( ce.isDoupdate() ) {
        session.getInterceptor().onCollectionUpdate( coll, ce.getLoadedKey() );
        actionQueue.addAction(
            new CollectionUpdateAction(
                coll,
                ce.getLoadedPersister(),
                ce.getLoadedKey(),
                ce.isSnapshotEmpty(coll),
                session
              )
          );
      }

    }

    actionQueue.sortCollectionActions();

  }
View Full Code Here


      final String tenantIdentifier) {
    super( factory, tenantIdentifier );
    this.timestamp = timestamp;
    this.sessionOwner = sessionOwner;
    this.interceptor = interceptor == null ? EmptyInterceptor.INSTANCE : interceptor;
    this.actionQueue = new ActionQueue( this );
    this.persistenceContext = new StatefulPersistenceContext( this );

    this.autoCloseSessionEnabled = autoCloseSessionEnabled;
    this.flushBeforeCompletionEnabled = flushBeforeCompletionEnabled;
View Full Code Here

        LOG.trace("Scheduling collection removes/(re)creates/updates");

    list = IdentityMap.entries( session.getPersistenceContext().getCollectionEntries() );
    size = list.size();
    ActionQueue actionQueue = session.getActionQueue();
    for ( int i = 0; i < size; i++ ) {
      Map.Entry me = (Map.Entry) list.get(i);
      PersistentCollection coll = (PersistentCollection) me.getKey();
      CollectionEntry ce = (CollectionEntry) me.getValue();

      if ( ce.isDorecreate() ) {
        session.getInterceptor().onCollectionRecreate( coll, ce.getCurrentKey() );
        actionQueue.addAction(
            new CollectionRecreateAction(
                coll,
                ce.getCurrentPersister(),
                ce.getCurrentKey(),
                session
              )
          );
      }
      if ( ce.isDoremove() ) {
        session.getInterceptor().onCollectionRemove( coll, ce.getLoadedKey() );
        actionQueue.addAction(
            new CollectionRemoveAction(
                coll,
                ce.getLoadedPersister(),
                ce.getLoadedKey(),
                ce.isSnapshotEmpty(coll),
                session
              )
          );
      }
      if ( ce.isDoupdate() ) {
        session.getInterceptor().onCollectionUpdate( coll, ce.getLoadedKey() );
        actionQueue.addAction(
            new CollectionUpdateAction(
                coll,
                ce.getLoadedPersister(),
                ce.getLoadedKey(),
                ce.isSnapshotEmpty(coll),
                session
              )
          );
      }

    }

    actionQueue.sortCollectionActions();

  }
View Full Code Here

    super( parent.factory, parent.getTenantIdentifier() );
    this.rootSession = parent;
    this.timestamp = parent.timestamp;
    this.transactionCoordinator = parent.transactionCoordinator;
    this.interceptor = parent.interceptor;
    this.actionQueue = new ActionQueue( this );
    this.entityMode = entityMode;
    this.persistenceContext = new StatefulPersistenceContext( this );
    this.flushBeforeCompletionEnabled = false;
    this.autoCloseSessionEnabled = false;
    this.connectionReleaseMode = null;
View Full Code Here

    super( factory, tenantIdentifier );
    this.rootSession = null;
    this.timestamp = timestamp;
    this.entityMode = entityMode;
    this.interceptor = interceptor == null ? EmptyInterceptor.INSTANCE : interceptor;
    this.actionQueue = new ActionQueue( this );
    this.persistenceContext = new StatefulPersistenceContext( this );
    this.flushBeforeCompletionEnabled = flushBeforeCompletionEnabled;
    this.autoCloseSessionEnabled = autoCloseSessionEnabled;
    this.connectionReleaseMode = connectionReleaseMode;
    this.autoJoinTransactions = autoJoinTransactions;
View Full Code Here

    // Schedule updates to collections:

    LOG.trace( "Scheduling collection removes/(re)creates/updates" );

    ActionQueue actionQueue = session.getActionQueue();
    for ( Map.Entry<PersistentCollection,CollectionEntry> me :
      IdentityMap.concurrentEntries( (Map<PersistentCollection,CollectionEntry>) persistenceContext.getCollectionEntries() )) {
      PersistentCollection coll = me.getKey();
      CollectionEntry ce = me.getValue();

      if ( ce.isDorecreate() ) {
        session.getInterceptor().onCollectionRecreate( coll, ce.getCurrentKey() );
        actionQueue.addAction(
            new CollectionRecreateAction(
                coll,
                ce.getCurrentPersister(),
                ce.getCurrentKey(),
                session
              )
          );
      }
      if ( ce.isDoremove() ) {
        session.getInterceptor().onCollectionRemove( coll, ce.getLoadedKey() );
        actionQueue.addAction(
            new CollectionRemoveAction(
                coll,
                ce.getLoadedPersister(),
                ce.getLoadedKey(),
                ce.isSnapshotEmpty(coll),
                session
              )
          );
      }
      if ( ce.isDoupdate() ) {
        session.getInterceptor().onCollectionUpdate( coll, ce.getLoadedKey() );
        actionQueue.addAction(
            new CollectionUpdateAction(
                coll,
                ce.getLoadedPersister(),
                ce.getLoadedKey(),
                ce.isSnapshotEmpty(coll),
                session
              )
          );
      }

    }

    actionQueue.sortCollectionActions();

  }
View Full Code Here

      final String tenantIdentifier) {
    super( factory, tenantIdentifier );
    this.timestamp = timestamp;
    this.sessionOwner = sessionOwner;
    this.interceptor = interceptor == null ? EmptyInterceptor.INSTANCE : interceptor;
    this.actionQueue = new ActionQueue( this );
    this.persistenceContext = new StatefulPersistenceContext( this );

    this.autoCloseSessionEnabled = autoCloseSessionEnabled;
    this.flushBeforeCompletionEnabled = flushBeforeCompletionEnabled;
View Full Code Here

             * would be eaten).
             *
             * In a JTA env, the before transaction completion is called before the flush, so not all changes are yet
             * written. However, Synchronization-s do propagate exceptions, so they can be safely used.
             */
      final ActionQueue actionQueue = eventSource.getActionQueue();
      boolean isLocal = isLocalTransaction();
      if ( isLocal ) {
        //if local tx never use Synchronization
        actionQueue.registerProcess( new DelegateToSynchronizationOnBeforeTx( synchronization ) );
      }
      else {
        //TODO could we remove the action queue registration in this case?
        actionQueue.registerProcess( new DelegateToSynchronizationOnBeforeTx( synchronization ) );
        eventSource.getTransaction().registerSynchronization(
            new BeforeCommitSynchronizationDelegator( synchronization )
        );
      }

      //executed in all environments
      actionQueue.registerProcess( new DelegateToSynchronizationOnAfterTx( synchronization ) );
    }
    else {
      //registerSynchronization is only called if isRealTransactionInProgress or if
      // a flushListener was found; still we might need to find the listener again
      // as it might have been cleared by serialization (is transient).
View Full Code Here

      final String tenantIdentifier) {
    super( factory, tenantIdentifier );
    this.timestamp = timestamp;
    this.sessionOwner = sessionOwner;
    this.interceptor = interceptor == null ? EmptyInterceptor.INSTANCE : interceptor;
    this.actionQueue = new ActionQueue( this );
    this.persistenceContext = new StatefulPersistenceContext( this );

    this.autoCloseSessionEnabled = autoCloseSessionEnabled;
    this.flushBeforeCompletionEnabled = flushBeforeCompletionEnabled;
View Full Code Here

      final ConnectionReleaseMode connectionReleaseMode,
      final String tenantIdentifier) {
    super( factory, tenantIdentifier );
    this.timestamp = timestamp;
    this.interceptor = interceptor == null ? EmptyInterceptor.INSTANCE : interceptor;
    this.actionQueue = new ActionQueue( this );
    this.persistenceContext = new StatefulPersistenceContext( this );
    this.flushBeforeCompletionEnabled = flushBeforeCompletionEnabled;
    this.autoCloseSessionEnabled = autoCloseSessionEnabled;
    this.connectionReleaseMode = connectionReleaseMode;
    this.autoJoinTransactions = autoJoinTransactions;
View Full Code Here

TOP

Related Classes of org.hibernate.engine.spi.ActionQueue$InsertActionSorter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.