Example usage for org.springframework.jdbc.object BatchSqlUpdate compile

List of usage examples for org.springframework.jdbc.object BatchSqlUpdate compile

Introduction

In this page you can find the example usage for org.springframework.jdbc.object BatchSqlUpdate compile.

Prototype

public final void compile() throws InvalidDataAccessApiUsageException 

Source Link

Document

Compile this query.

Usage

From source file:com.hmsinc.epicenter.tools.reclassifier.Reclassifier.java

@Transactional
public void run() {

    setup();/*from w  w w .  ja va 2 s. c o m*/

    final String destinationTable = (arguments.length > 4) ? arguments[4] : DEFAULT_TABLE_NAME;
    final String query = new StringBuilder("INSERT INTO ").append(destinationTable)
            .append(INSERT_CLASSIFICATION).toString();

    final BatchSqlUpdate updater = new BatchSqlUpdate(modelDataSource, query);
    updater.declareParameter(new SqlParameter(Types.BIGINT));
    updater.declareParameter(new SqlParameter(Types.BIGINT));
    updater.setBatchSize(BATCH_SIZE);
    updater.compile();

    final StatelessSession ss = ((Session) entityManager.getDelegate()).getSessionFactory()
            .openStatelessSession();

    final Criteria c = ss.createCriteria(target.getInteractionClass())
            .add(Restrictions.eq("patientClass", target.getPatientClass())).addOrder(Order.asc("id"))
            .setCacheable(false);

    if (arguments.length > 2) {
        c.add(Restrictions.gt("id", Long.valueOf(arguments[2])));
    }

    if (arguments.length > 3) {
        c.add(Restrictions.lt("id", Long.valueOf(arguments[3])));
    }

    final ScrollableResults sr = c.scroll(ScrollMode.FORWARD_ONLY);
    int i = 0;
    while (sr.next()) {

        final Interaction interaction = (Interaction) sr.get(0);
        final Set<Classification> classifications = classificationService.classify(interaction, target);

        save(interaction, classifications, updater);

        i++;
        if (i % BATCH_SIZE == 0) {
            logger.info("Processed {} interactions (current id: {})", i, interaction.getId());
        }

        ((Session) entityManager.getDelegate()).evict(interaction);
    }

    sr.close();

    updater.flush();
}

From source file:anyframe.core.query.impl.QueryServiceImpl.java

/**
 * BatchSqlUpdate ? ? ? SQL?  Batch  ./*from w  ww.  j a v  a 2  s .c o  m*/
 * 
 * @param sql
 *            query statement.
 * @param types
 *            is matched with input parameters. A type must belong to fields
 *            defined java.sql.Types package.
 * @param targets
 *            object of class which is matched with specified table in XML
 *            files. is the List type of Object Array.
 * @return an array of the number of rows affected by each statement.
 */
protected int[] batchExecutor(final String sql, int[] types, final List targets) throws QueryServiceException {
    if (targets.size() <= 0)
        throw new QueryServiceException(getMessageSource(), "error.query.runtime.batch");

    BatchSqlUpdate sqlBatch = new BatchSqlUpdate();
    sqlBatch.setJdbcTemplate(jdbcTemplate);
    sqlBatch.setSql(sql);

    for (int i = 0; types != null && i < types.length; i++) {
        SqlParameter sp = new SqlParameter(types[i]);
        sqlBatch.declareParameter(sp);
    }
    sqlBatch.compile();

    for (int i = 0; i < targets.size(); i++) {
        Object obj = targets.get(i);
        if (obj instanceof Object[])
            sqlBatch.update((Object[]) obj);
    }
    return sqlBatch.flush();
}