Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * Copyright 2015 Objectos, Fábrica de Software LTDA.
  *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package br.com.objectos.way.relational;

Author(s):
marcio.endo@objectos.com.br (Marcio Endo)
public class NativeBatchUpdate {
  private final Options options;
  NativeBatchUpdate(ConnectionProvider connectionProviderOptions options) {
    this. = connectionProvider;
    this. = options;
  }
  public void update(Iterable<? extends Updatableentities) {
    Iterator<? extends Updatableiterator = entities.iterator();
    update(iterator);
  }
  public void update(Iterator<? extends Updatableentities) {
    PeekingIterator<? extends Updatableiterator = Iterators.peekingIterator(entities);
    if (!iterator.hasNext()) {
      return;
    }
    Updatable first = iterator.peek();
    Update firstUpdate = first.getUpdate();
    String sql = firstUpdate.toString();
    int batchSize = .getBatchSize();
    update0(sqliteratorbatchSize);
  }
  private void update0(String sqlIterator<? extends Updatableentitiesint batchSize) {
    try (Connection trx = .get();
        PreparedStatement stmt = trx.prepareStatement(sql)) {
      trx.setAutoCommit(false);
      PreparedStatementWrapper wrapper = new PreparedStatementWrapper(stmt);
      while (entities.hasNext()) {
        Updatable entity = entities.next();
        Update update = entity.getUpdate();
        update.prepare(wrapper);
        wrapper.addBatch();
        wrapper.executeBatchWhen(batchSize);
      }
      wrapper.executeBatch();
      trx.commit();
    } catch (SQLException e) {
      throw new SQLRuntimeException(e);
    }
  }
New to GrepCode? Check out our FAQ X