# Class BatchAction

java.lang.Object
org.apache.cayenne.access.jdbc.BaseSQLAction
org.apache.cayenne.access.jdbc.BatchAction

All Implemented Interfaces:
  `SQLAction`

Direct Known Subclasses:
  `PostgresBatchAction, SQLServerBatchAction`

public class BatchAction extends BaseSQLAction

Since:
  1.2

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected RSColumn[]`
  `keyColumns`
  `protected BatchQuery`
  `query`
  `protected boolean`
  `runningAsBatch`

  ### Fields inherited from class BaseSQLAction

  `dataNode`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BatchAction(BatchQuery query, DataNode dataNode, boolean runningAsBatch)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected boolean`
  `canRunAsBatch()`
  `BatchQuery`
  `getQuery()`
  `protected boolean`
  `hasGeneratedKeys()`
  Returns whether BatchQuery generates any keys.
  `void`
  `performAction(Connection connection, OperationObserver observer)`
  Executes a query using a strategy defined by the implementation.
  `protected PreparedStatement`
  `prepareStatement(Connection connection, String queryStr, DbAdapter adapter, boolean generatedKeys)`
  `protected void`
  `processGeneratedKeys(Statement statement, OperationObserver observer, List<BatchQueryRow> rows)`
  `protected void`
  `processGeneratedKeys(Statement statement, OperationObserver observer, BatchQueryRow row)`
  Implements generated keys extraction supported in JDBC 3.0 specification.
  `protected PSParameter<?>[]`
  `rowBindings(TranslatedBatch translated, int row, ExtendedTypeMap extendedTypes)`
  Resolves the given batch row against the translated batch parameters, returning per-row bindings.
  `protected void`
  `runAsBatch(Connection con, TranslatedBatch translated, OperationObserver delegate, boolean generatesKeys)`
  `protected void`
  `runAsIndividualQueries(Connection connection, TranslatedBatch translated, OperationObserver delegate, boolean generatesKeys)`
  Executes batch as individual queries over the same prepared statement.
  `protected boolean`
  `supportsGeneratedKeys(boolean isBatch)`

  ### Methods inherited from class BaseSQLAction

  `getInMemoryOffset, readResultSet`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### runningAsBatch

    protected boolean runningAsBatch

  - ### query

    protected BatchQuery query

  - ### keyColumns

    protected RSColumn[] keyColumns

- ## Constructor Details

  - ### BatchAction

    public BatchAction(BatchQuery query, DataNode dataNode, boolean runningAsBatch)
    Since:
      4.0

- ## Method Details

  - ### getQuery

    public BatchQuery getQuery()
    Returns:
      Query which originated this action

  - ### performAction

    public void performAction(Connection connection, OperationObserver observer) throws Exception
    Description copied from interface: `SQLAction`
    Executes a query using a strategy defined by the implementation.
    Throws:
      `Exception`

  - ### canRunAsBatch

    protected boolean canRunAsBatch()

  - ### runAsBatch

    protected void runAsBatch(Connection con, TranslatedBatch translated, OperationObserver delegate, boolean generatesKeys) throws Exception
    Throws:
      `Exception`

  - ### runAsIndividualQueries

    protected void runAsIndividualQueries(Connection connection, TranslatedBatch translated, OperationObserver delegate, boolean generatesKeys) throws Exception
    Executes batch as individual queries over the same prepared statement.
    Throws:
      `Exception`

  - ### rowBindings

    protected PSParameter<?>[] rowBindings(TranslatedBatch translated, int row, ExtendedTypeMap extendedTypes)
    Resolves the given batch row against the translated batch parameters, returning per-row bindings.

  - ### prepareStatement

    protected PreparedStatement prepareStatement(Connection connection, String queryStr, DbAdapter adapter, boolean generatedKeys) throws SQLException
    Throws:
      `SQLException`

  - ### supportsGeneratedKeys

    protected boolean supportsGeneratedKeys(boolean isBatch)

  - ### hasGeneratedKeys

    protected boolean hasGeneratedKeys()
    Returns whether BatchQuery generates any keys.

  - ### processGeneratedKeys

    protected void processGeneratedKeys(Statement statement, OperationObserver observer, BatchQueryRow row) throws SQLException
    Implements generated keys extraction supported in JDBC 3.0 specification.
    Throws:
      `SQLException`
    Since:
      4.0

  - ### processGeneratedKeys

    protected void processGeneratedKeys(Statement statement, OperationObserver observer, List<BatchQueryRow> rows) throws SQLException
    Throws:
      `SQLException`
    Since:
      4.2