StatementBatch.java

package org.itsallcode.jdbc.batch;

import org.itsallcode.jdbc.SimpleStatement;

/**
 * A batch handler for SQL statements.
 */
public class StatementBatch implements AutoCloseable {

    private final Batch batch;
    private final SimpleStatement statement;

    /**
     * Create a new instance.
     * 
     * @param statement    the statement
     * @param maxBatchSize maximum batch size
     */
    public StatementBatch(final SimpleStatement statement, final int maxBatchSize) {
        this.statement = statement;
        this.batch = new Batch(maxBatchSize, statement, statement::executeBatch);
    }

    /**
     * Add a new SQL statement to the batch.
     * 
     * @param sql SQL statement
     */
    public void addBatch(final String sql) {
        statement.addBatch(sql);
        this.batch.addBatch();
    }

    @Override
    public void close() {
        this.batch.close();
    }
}