Package org.springframework.jdbc.object
Class BatchSqlUpdate
- java.lang.Object
- org.springframework.jdbc.object.RdbmsOperation
- org.springframework.jdbc.object.SqlOperation
- org.springframework.jdbc.object.SqlUpdate
- org.springframework.jdbc.object.BatchSqlUpdate
 
 
 
 
- All Implemented Interfaces:
- InitializingBean
 - public class BatchSqlUpdate extends SqlUpdate SqlUpdate subclass that performs batch update operations. Encapsulates queuing up records to be updated, and adds them as a single batch once- flushis called or the given batch size has been met.- Note that this class is a non-thread-safe object, in contrast to all other JDBC operations objects in this package. You need to create a new instance of it for each use, or call - resetbefore reuse within the same thread.
- Field Summary- Fields - Modifier and Type - Field - Description - static int- DEFAULT_BATCH_SIZEDefault number of inserts to accumulate before committing a batch (5000).- Fields inherited from class org.springframework.jdbc.object.RdbmsOperation- logger
 
 - Constructor Summary- Constructors - Constructor - Description - BatchSqlUpdate()Constructor to allow use as a JavaBean.- BatchSqlUpdate(DataSource ds, String sql)Construct an update object with a given DataSource and SQL.- BatchSqlUpdate(DataSource ds, String sql, int[] types)Construct an update object with a given DataSource, SQL and anonymous parameters.- BatchSqlUpdate(DataSource ds, String sql, int[] types, int batchSize)Construct an update object with a given DataSource, SQL, anonymous parameters and specifying the maximum number of rows that may be affected.
 - Method Summary- All Methods Instance Methods Concrete Methods - Modifier and Type - Method - Description - int[]- flush()Trigger any queued update operations to be added as a final batch.- int- getExecutionCount()Return the number of already executed statements.- int- getQueueCount()Return the current number of statements or statement parameters in the queue.- int[]- getRowsAffected()Return the number of affected rows for all already executed statements.- void- reset()Reset the statement parameter queue, the rows affected cache, and the execution count.- void- setBatchSize(int batchSize)Set the number of statements that will trigger an automatic intermediate flush.- void- setTrackRowsAffected(boolean trackRowsAffected)Set whether to track the rows affected by batch updates performed by this operation object.- protected boolean- supportsLobParameters()BatchSqlUpdate does not support BLOB or CLOB parameters.- int- update(Object... params)Overridden version of- updatethat adds the given statement parameters to the queue rather than executing them immediately.- Methods inherited from class org.springframework.jdbc.object.SqlUpdate- checkRowsAffected, setMaxRowsAffected, setRequiredRowsAffected, update, update, update, update, update, update, update, update, updateByNamedParam, updateByNamedParam
 - Methods inherited from class org.springframework.jdbc.object.SqlOperation- compileInternal, getParsedSql, newPreparedStatementCreator, newPreparedStatementCreator, newPreparedStatementSetter, onCompileInternal
 - Methods inherited from class org.springframework.jdbc.object.RdbmsOperation- afterPropertiesSet, allowsUnusedParameters, checkCompiled, compile, declareParameter, getDeclaredParameters, getGeneratedKeysColumnNames, getJdbcTemplate, getResultSetType, getSql, isCompiled, isReturnGeneratedKeys, isUpdatableResults, setDataSource, setFetchSize, setGeneratedKeysColumnNames, setJdbcTemplate, setMaxRows, setParameters, setQueryTimeout, setResultSetType, setReturnGeneratedKeys, setSql, setTypes, setUpdatableResults, validateNamedParameters, validateParameters
 
 
- Field Detail- DEFAULT_BATCH_SIZE- public static final int DEFAULT_BATCH_SIZE Default number of inserts to accumulate before committing a batch (5000).- See Also:
- Constant Field Values
 
 
 - Constructor Detail- BatchSqlUpdate- public BatchSqlUpdate() Constructor to allow use as a JavaBean. DataSource and SQL must be supplied before compilation and use.
 - BatchSqlUpdate- public BatchSqlUpdate(DataSource ds, String sql) Construct an update object with a given DataSource and SQL.- Parameters:
- ds- DataSource to use to obtain connections
- sql- SQL statement to execute
 
 - BatchSqlUpdate- public BatchSqlUpdate(DataSource ds, String sql, int[] types) Construct an update object with a given DataSource, SQL and anonymous parameters.- Parameters:
- ds- DataSource to use to obtain connections
- sql- SQL statement to execute
- types- SQL types of the parameters, as defined in the- java.sql.Typesclass
- See Also:
- Types
 
 - BatchSqlUpdate- public BatchSqlUpdate(DataSource ds, String sql, int[] types, int batchSize) Construct an update object with a given DataSource, SQL, anonymous parameters and specifying the maximum number of rows that may be affected.- Parameters:
- ds- DataSource to use to obtain connections
- sql- SQL statement to execute
- types- SQL types of the parameters, as defined in the- java.sql.Typesclass
- batchSize- the number of statements that will trigger an automatic intermediate flush
- See Also:
- Types
 
 
 - Method Detail- setBatchSize- public void setBatchSize(int batchSize) Set the number of statements that will trigger an automatic intermediate flush.- updatecalls or the given statement parameters will be queued until the batch size is met, at which point it will empty the queue and execute the batch.- You can also flush already queued statements with an explicit - flushcall. Note that you need to this after queueing all parameters to guarantee that all statements have been flushed.
 - setTrackRowsAffected- public void setTrackRowsAffected(boolean trackRowsAffected) Set whether to track the rows affected by batch updates performed by this operation object.- Default is "true". Turn this off to save the memory needed for the list of row counts. - See Also:
- getRowsAffected()
 
 - supportsLobParameters- protected boolean supportsLobParameters() BatchSqlUpdate does not support BLOB or CLOB parameters.- Overrides:
- supportsLobParametersin class- RdbmsOperation
 
 - update- public int update(Object... params) throws DataAccessException Overridden version of- updatethat adds the given statement parameters to the queue rather than executing them immediately. All other- updatemethods of the SqlUpdate base class go through this method and will thus behave similarly.- You need to call - flushto actually execute the batch. If the specified batch size is reached, an implicit flush will happen; you still need to finally call- flushto flush all statements.- Overrides:
- updatein class- SqlUpdate
- Parameters:
- params- array of parameter objects
- Returns:
- the number of rows affected by the update (always -1, meaning "not applicable", as the statement is not actually executed by this method)
- Throws:
- DataAccessException
- See Also:
- flush()
 
 - flush- public int[] flush() Trigger any queued update operations to be added as a final batch.- Returns:
- an array of the number of rows affected by each statement
 
 - getQueueCount- public int getQueueCount() Return the current number of statements or statement parameters in the queue.
 - getExecutionCount- public int getExecutionCount() Return the number of already executed statements.
 - getRowsAffected- public int[] getRowsAffected() Return the number of affected rows for all already executed statements. Accumulates all of- flush's return values until- resetis invoked.- Returns:
- an array of the number of rows affected by each statement
- See Also:
- reset()
 
 - reset- public void reset() Reset the statement parameter queue, the rows affected cache, and the execution count.