Package org.hibernate.jdbc

Examples of org.hibernate.jdbc.Expectation


      if ( j == 0 && isVersioned() ) {
        log.trace( "Version: " + Versioning.getVersion( fields, this ) );
      }
    }

    Expectation expectation = Expectations.appropriateExpectation( insertResultCheckStyles[j] );
    boolean callable = isInsertCallable( j );
    // we can't batch joined inserts, *especially* not if it is an identity insert;
    // nor can we batch statements where the expectation is based on an output param
    final boolean useBatch = j == 0 && expectation.canBeBatched();
    try {

      // Render the SQL query
      final PreparedStatement insert;
      if ( useBatch ) {
        if ( callable ) {
          insert = session.getBatcher().prepareBatchCallableStatement( sql );
        }
        else {
          insert = session.getBatcher().prepareBatchStatement( sql );
        }
      }
      else {
        if ( callable ) {
          insert = session.getBatcher().prepareCallableStatement( sql );
        }
        else {
          insert = session.getBatcher().prepareStatement( sql );
        }
      }

      try {
        int index = 1;
        index += expectation.prepare( insert );

        // Write the values of fields onto the prepared statement - we MUST use the state at the time the
        // insert was issued (cos of foreign key constraints). Not necessarily the object's current state

        dehydrate( id, fields, null, notNull, propertyColumnInsertable, j, insert, session, index );

        if ( useBatch ) {
          // TODO : shouldnt inserts be Expectations.NONE?
          session.getBatcher().addToBatch( expectation );
        }
        else {
          expectation.verifyOutcome( insert.executeUpdate(), insert, -1 );
        }

      }
      catch ( SQLException sqle ) {
        if ( useBatch ) {
View Full Code Here


          final Object object,
          final String sql,
          final SessionImplementor session) throws HibernateException {

    final boolean useVersion = j == 0 && isVersioned();
    final Expectation expectation = Expectations.appropriateExpectation( updateResultCheckStyles[j] );
    final boolean callable = isUpdateCallable( j );
    final boolean useBatch = j == 0 && expectation.canBeBatched() && isBatchable(); //note: updates to joined tables can't be batched...

    if ( log.isTraceEnabled() ) {
      log.trace( "Updating entity: " + MessageHelper.infoString( this, id, getFactory() ) );
      if ( useVersion ) {
        log.trace( "Existing version: " + oldVersion + " -> New version: " + fields[getVersionProperty()] );
      }
    }

    try {

      int index = 1; // starting index
      final PreparedStatement update;
      if ( useBatch ) {
        if ( callable ) {
          update = session.getBatcher().prepareBatchCallableStatement( sql );
        }
        else {
          update = session.getBatcher().prepareBatchStatement( sql );
        }
      }
      else {
        if ( callable ) {
          update = session.getBatcher().prepareCallableStatement( sql );
        }
        else {
          update = session.getBatcher().prepareStatement( sql );
        }
      }

      try {

        index+= expectation.prepare( update );

        //Now write the values of fields onto the prepared statement
        index = dehydrate( id, fields, rowId, includeProperty, propertyColumnUpdateable, j, update, session, index );

        // Write any appropriate versioning conditional parameters
View Full Code Here

      return;
    }

    final boolean useVersion = j == 0 && isVersioned();
    final boolean callable = isDeleteCallable( j );
    final Expectation expectation = Expectations.appropriateExpectation( deleteResultCheckStyles[j] );
    final boolean useBatch = j == 0 && isBatchable() && expectation.canBeBatched();

    if ( log.isTraceEnabled() ) {
      log.trace( "Deleting entity: " + MessageHelper.infoString( this, id, getFactory() ) );
      if ( useVersion ) {
        log.trace( "Version: " + version );
      }
    }

    if ( isTableCascadeDeleteEnabled( j ) ) {
      if ( log.isTraceEnabled() ) {
        log.trace( "delete handled by foreign key constraint: " + getTableName( j ) );
      }
      return; //EARLY EXIT!
    }

    try {

      //Render the SQL query
      PreparedStatement delete;
      int index = 1;
      if ( useBatch ) {
        if ( callable ) {
          delete = session.getBatcher().prepareBatchCallableStatement( sql );
        }
        else {
          delete = session.getBatcher().prepareBatchStatement( sql );
        }
      }
      else {
        if ( callable ) {
          delete = session.getBatcher().prepareCallableStatement( sql );
        }
        else {
          delete = session.getBatcher().prepareStatement( sql );
        }
      }

      try {

        index += expectation.prepare( delete );

        // Do the key. The key is immutable so we can use the _current_ object state - not necessarily
        // the state at the time the delete was issued
        getIdentifierType().nullSafeSet( delete, id, index, session );
        index += getIdentifierColumnSpan();
View Full Code Here

        try {
          int i = 0;
 
          Iterator entries = collection.entries( this );
          int offset = 1;
          Expectation expectation = Expectations.NONE;
          while ( entries.hasNext() ) {
 
            Object entry = entries.next();
            if ( collection.needsUpdating( entry, i, elementType ) ) {  // will still be issued when it used to be null
              if ( st == null ) {
                String sql = getSQLDeleteRowString();
                if ( isDeleteCallable() ) {
                  expectation = Expectations.appropriateExpectation( getDeleteCheckStyle() );
                  useBatch = expectation.canBeBatched();
                  st = useBatch
                      ? session.getBatcher().prepareBatchCallableStatement( sql )
                            : session.getBatcher().prepareCallableStatement( sql );
                  offset += expectation.prepare( st );
                }
                else {
                  st = session.getBatcher().prepareBatchStatement( getSQLDeleteRowString() );
                }
              }
              int loc = writeKey( st, id, offset, session );
              writeElementToWhere( st, collection.getSnapshotElement(entry, i), loc, session );
              if ( useBatch ) {
                session.getBatcher().addToBatch( expectation );
              }
              else {
                expectation.verifyOutcome( st.executeUpdate(), st, -1 );
              }
              count++;
            }
            i++;
          }
        }
        catch ( SQLException sqle ) {
          if ( useBatch ) {
            session.getBatcher().abortBatch( sqle );
          }
          throw sqle;
        }
        finally {
          if ( !useBatch ) {
            session.getBatcher().closeStatement( st );
          }
        }
      }
     
      if ( isRowInsertEnabled() ) {
        Expectation expectation = Expectations.appropriateExpectation( getInsertCheckStyle() );
        boolean callable = isInsertCallable();
        boolean useBatch = expectation.canBeBatched();
        String sql = getSQLInsertRowString();
        PreparedStatement st = null;
        // now update all changed or added rows fks
        try {
          int i = 0;
          Iterator entries = collection.entries( this );
          while ( entries.hasNext() ) {
            Object entry = entries.next();
            int offset = 1;
            if ( collection.needsUpdating( entry, i, elementType ) ) {
              if ( useBatch ) {
                if ( st == null ) {
                  if ( callable ) {
                    st = session.getBatcher().prepareBatchCallableStatement( sql );
                  }
                  else {
                    st = session.getBatcher().prepareBatchStatement( sql );
                  }
                }
              }
              else {
                if ( callable ) {
                  st = session.getBatcher().prepareCallableStatement( sql );
                }
                else {
                  st = session.getBatcher().prepareStatement( sql );
                }
              }

              offset += expectation.prepare( st );

              int loc = writeKey( st, id, offset, session );
              if ( hasIndex && !indexContainsFormula ) {
                loc = writeIndexToWhere( st, collection.getIndex( entry, i, this ), loc, session );
              }

              writeElementToWhere( st, collection.getElement( entry ), loc, session );

              if ( useBatch ) {
                session.getBatcher().addToBatch( expectation );
              }
              else {
                expectation.verifyOutcome( st.executeUpdate(), st, -1 );
              }
              count++;
            }
            i++;
          }
View Full Code Here

   
    if ( ArrayHelper.isAllFalse(elementColumnIsSettable) ) return 0;

    try {
      PreparedStatement st = null;
      Expectation expectation = Expectations.appropriateExpectation( getUpdateCheckStyle() );
      boolean callable = isUpdateCallable();
      boolean useBatch = expectation.canBeBatched();
      Iterator entries = collection.entries( this );
      String sql = getSQLUpdateRowString();
      int i = 0;
      int count = 0;
      while ( entries.hasNext() ) {
        Object entry = entries.next();
        if ( collection.needsUpdating( entry, i, elementType ) ) {
          int offset = 1;

          if ( useBatch ) {
            if ( st == null ) {
              if ( callable ) {
                st = session.getBatcher().prepareBatchCallableStatement( sql );
              }
              else {
                st = session.getBatcher().prepareBatchStatement( sql );
              }
            }
          }
          else {
            if ( callable ) {
              st = session.getBatcher().prepareCallableStatement( sql );
            }
            else {
              st = session.getBatcher().prepareStatement( sql );
            }
          }

          try {
            offset+= expectation.prepare( st );
            int loc = writeElement( st, collection.getElement( entry ), offset, session );
            if ( hasIdentifier ) {
              writeIdentifier( st, collection.getIdentifier( entry, i ), loc, session );
            }
            else {
              loc = writeKey( st, id, loc, session );
              if ( hasIndex && !indexContainsFormula ) {
                writeIndexToWhere( st, collection.getIndex( entry, i, this ), loc, session );
              }
              else {
                writeElementToWhere( st, collection.getSnapshotElement( entry, i ), loc, session );
              }
            }

            if ( useBatch ) {
              session.getBatcher().addToBatch( expectation );
            }
            else {
              expectation.verifyOutcome( st.executeUpdate(), st, -1 );
            }
          }
          catch ( SQLException sqle ) {
            if ( useBatch ) {
              session.getBatcher().abortBatch( sqle );
View Full Code Here

      if ( j == 0 && isVersioned() )
        LOG.tracev( "Version: {0}", Versioning.getVersion( fields, this ) );
    }

    // TODO : shouldn't inserts be Expectations.NONE?
    final Expectation expectation = Expectations.appropriateExpectation( insertResultCheckStyles[j] );
    // we can't batch joined inserts, *especially* not if it is an identity insert;
    // nor can we batch statements where the expectation is based on an output param
    final boolean useBatch = j == 0 && expectation.canBeBatched();
    if ( useBatch && inserBatchKey == null ) {
      inserBatchKey = new BasicBatchKey(
          getEntityName() + "#INSERT",
          expectation
      );
    }
    final boolean callable = isInsertCallable( j );

    try {
      // Render the SQL query
      final PreparedStatement insert;
      if ( useBatch ) {
        insert = session.getTransactionCoordinator()
            .getJdbcCoordinator()
            .getBatch( inserBatchKey )
            .getBatchStatement( sql, callable );
      }
      else {
        insert = session.getTransactionCoordinator()
            .getJdbcCoordinator()
            .getStatementPreparer()
            .prepareStatement( sql, callable );
      }

      try {
        int index = 1;
        index += expectation.prepare( insert );

        // Write the values of fields onto the prepared statement - we MUST use the state at the time the
        // insert was issued (cos of foreign key constraints). Not necessarily the object's current state

        dehydrate( id, fields, null, notNull, propertyColumnInsertable, j, insert, session, index, false );

        if ( useBatch ) {
          session.getTransactionCoordinator().getJdbcCoordinator().getBatch( inserBatchKey ).addToBatch();
        }
        else {
          expectation.verifyOutcome( session.getTransactionCoordinator().getJdbcCoordinator().getResultSetReturn().executeUpdate( insert ), insert, -1 );
        }

      }
      catch ( SQLException e ) {
        if ( useBatch ) {
View Full Code Here

      final Object oldVersion,
      final Object object,
      final String sql,
      final SessionImplementor session) throws HibernateException {

    final Expectation expectation = Expectations.appropriateExpectation( updateResultCheckStyles[j] );
    final boolean useBatch = j == 0 && expectation.canBeBatched() && isBatchable(); //note: updates to joined tables can't be batched...
    if ( useBatch && updateBatchKey == null ) {
      updateBatchKey = new BasicBatchKey(
          getEntityName() + "#UPDATE",
          expectation
      );
    }
    final boolean callable = isUpdateCallable( j );
    final boolean useVersion = j == 0 && isVersioned();

    if ( LOG.isTraceEnabled() ) {
      LOG.tracev( "Updating entity: {0}", MessageHelper.infoString( this, id, getFactory() ) );
      if ( useVersion )
        LOG.tracev( "Existing version: {0} -> New version:{1}", oldVersion, fields[getVersionProperty()] );
    }

    try {
      int index = 1; // starting index
      final PreparedStatement update;
      if ( useBatch ) {
        update = session.getTransactionCoordinator()
            .getJdbcCoordinator()
            .getBatch( updateBatchKey )
            .getBatchStatement( sql, callable );
      }
      else {
        update = session.getTransactionCoordinator()
            .getJdbcCoordinator()
            .getStatementPreparer()
            .prepareStatement( sql, callable );
      }

      try {
        index+= expectation.prepare( update );

        //Now write the values of fields onto the prepared statement
        index = dehydrate( id, fields, rowId, includeProperty, propertyColumnUpdateable, j, update, session, index, true );

        // Write any appropriate versioning conditional parameters
View Full Code Here

      return;
    }

    final boolean useVersion = j == 0 && isVersioned();
    final boolean callable = isDeleteCallable( j );
    final Expectation expectation = Expectations.appropriateExpectation( deleteResultCheckStyles[j] );
    final boolean useBatch = j == 0 && isBatchable() && expectation.canBeBatched();
    if ( useBatch && deleteBatchKey == null ) {
      deleteBatchKey = new BasicBatchKey(
          getEntityName() + "#DELETE",
          expectation
      );
    }

    final boolean traceEnabled = LOG.isTraceEnabled();
    if ( traceEnabled ) {
      LOG.tracev( "Deleting entity: {0}", MessageHelper.infoString( this, id, getFactory() ) );
      if ( useVersion )
        LOG.tracev( "Version: {0}", version );
    }

    if ( isTableCascadeDeleteEnabled( j ) ) {
      if ( traceEnabled ) {
        LOG.tracev( "Delete handled by foreign key constraint: {0}", getTableName( j ) );
      }
      return; //EARLY EXIT!
    }

    try {
      //Render the SQL query
      PreparedStatement delete;
      int index = 1;
      if ( useBatch ) {
        delete = session.getTransactionCoordinator()
            .getJdbcCoordinator()
            .getBatch( deleteBatchKey )
            .getBatchStatement( sql, callable );
      }
      else {
        delete = session.getTransactionCoordinator()
            .getJdbcCoordinator()
            .getStatementPreparer()
            .prepareStatement( sql, callable );
      }

      try {

        index += expectation.prepare( delete );

        // Do the key. The key is immutable so we can use the _current_ object state - not necessarily
        // the state at the time the delete was issued
        getIdentifierType().nullSafeSet( delete, id, index, session );
        index += getIdentifierColumnSpan();
View Full Code Here

      // Remove all the old entries

      try {
        int offset = 1;
        PreparedStatement st = null;
        Expectation expectation = Expectations.appropriateExpectation( getDeleteAllCheckStyle() );
        boolean callable = isDeleteAllCallable();
        boolean useBatch = expectation.canBeBatched();
        String sql = getSQLDeleteString();
        if ( useBatch ) {
          if ( callable ) {
            st = session.getBatcher().prepareBatchCallableStatement( sql );
          }
          else {
            st = session.getBatcher().prepareBatchStatement( sql );
          }
        }
        else {
          if ( callable ) {
            st = session.getBatcher().prepareCallableStatement( sql );
          }
          else {
            st = session.getBatcher().prepareStatement( sql );
          }
        }


        try {
          offset+= expectation.prepare( st );

          writeKey( st, id, offset, session );
          if ( useBatch ) {
            session.getBatcher().addToBatch( expectation );
          }
          else {
            expectation.verifyOutcome( st.executeUpdate(), st, -1 );
          }
        }
        catch ( SQLException sqle ) {
          if ( useBatch ) {
            session.getBatcher().abortBatch( sqle );
View Full Code Here

            final Object entry = entries.next();
            if ( collection.entryExists( entry, i ) ) {
              int offset = 1;
              PreparedStatement st = null;
              Expectation expectation = Expectations.appropriateExpectation( getInsertCheckStyle() );
              boolean callable = isInsertCallable();
              boolean useBatch = expectation.canBeBatched();
              String sql = getSQLInsertRowString();

              if ( useBatch ) {
                if ( callable ) {
                  st = session.getBatcher().prepareBatchCallableStatement( sql );
                }
                else {
                  st = session.getBatcher().prepareBatchStatement( sql );
                }
              }
              else {
                if ( callable ) {
                  st = session.getBatcher().prepareCallableStatement( sql );
                }
                else {
                  st = session.getBatcher().prepareStatement( sql );
                }
              }


              try {
                offset+= expectation.prepare( st );

                //TODO: copy/paste from insertRows()
                int loc = writeKey( st, id, offset, session );
                if ( hasIdentifier ) {
                  loc = writeIdentifier( st, collection.getIdentifier(entry, i), loc, session );
                }
                if ( hasIndex /*&& !indexIsFormula*/ ) {
                  loc = writeIndex( st, collection.getIndex(entry, i, this), loc, session );
                }
                loc = writeElement(st, collection.getElement(entry), loc, session );

                if ( useBatch ) {
                  session.getBatcher().addToBatch( expectation );
                }
                else {
                  expectation.verifyOutcome( st.executeUpdate(), st, -1 );
                }

                collection.afterRowInsert( this, entry, i );
                count++;
              }
View Full Code Here

TOP

Related Classes of org.hibernate.jdbc.Expectation

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.