org.hibernate.jdbc

Interface Batcher

Known Implementing Classes:
AbstractBatcher, BatchingBatcher, NonBatchingBatcher

public interface Batcher

Manages PreparedStatements for a session. Abstracts JDBC batching to maintain the illusion that a single logical batch exists for the whole session, even when batching is disabled. Provides transparent PreparedStatement caching.
Author:
Gavin King
See Also:
java.sql.PreparedStatement, SessionImpl

Method Summary

void
abortBatch(SQLException sqle)
Must be called when an exception occurs
void
addToBatch(Expectation expectation)
Add an insert / delete / update to the current batch (might be called multiple times for single prepareBatchStatement())
void
cancelLastQuery()
Cancel the current query statement
void
closeConnection(Connection conn)
Dispose of the JDBC connection
void
closeQueryStatement(PreparedStatement ps, ResultSet rs)
Close a prepared statement opened with prepareQueryStatement()
void
closeStatement(PreparedStatement ps)
Close a prepared or callable statement opened using prepareStatement() or prepareCallableStatement()
void
closeStatements()
Close any query statements that were left lying around
void
executeBatch()
Execute the batch
ResultSet
getResultSet(CallableStatement ps, Dialect dialect)
Execute the statement and return the result set from a callable statement
ResultSet
getResultSet(PreparedStatement ps)
Execute the statement and return the result set
boolean
hasOpenResources()
Connection
openConnection()
Obtain a JDBC connection
String
openResourceStatsAsString()
CallableStatement
prepareBatchCallableStatement(String sql)
Get a batchable callable statement to use for inserting / deleting / updating (might be called many times before a single call to executeBatch()).
PreparedStatement
prepareBatchStatement(String sql)
Get a batchable prepared statement to use for inserting / deleting / updating (might be called many times before a single call to executeBatch()).
CallableStatement
prepareCallableQueryStatement(String sql, boolean scrollable, ScrollMode scrollMode)
Get a prepared statement for use in loading / querying.
CallableStatement
prepareCallableStatement(String sql)
Get a non-batchable callable statement to use for inserting / deleting / updating.
PreparedStatement
prepareQueryStatement(String sql, boolean scrollable, ScrollMode scrollMode)
Get a prepared statement for use in loading / querying.
PreparedStatement
prepareSelectStatement(String sql)
Get a non-batchable prepared statement to use for selecting.
PreparedStatement
prepareStatement(String sql)
Get a non-batchable prepared statement to use for inserting / deleting / updating.
PreparedStatement
prepareStatement(String sql, String[] columnNames)
Get a non-batchable prepared statement to use for inserting / deleting / updating.
PreparedStatement
prepareStatement(String sql, boolean useGetGeneratedKeys)
Get a non-batchable prepared statement to use for inserting / deleting / updating, using JDBC3 getGeneratedKeys (Connection.prepareStatement(String, int)).
void
setTransactionTimeout(int seconds)
Set the transaction timeout to seconds later than the current system time.
void
unsetTransactionTimeout()
Unset the transaction timeout, called after the end of a transaction.

Method Details

abortBatch

public void abortBatch(SQLException sqle)
Must be called when an exception occurs
Parameters:
sqle - the (not null) exception that is the reason for aborting

addToBatch

public void addToBatch(Expectation expectation)
            throws SQLException,
                   HibernateException
Add an insert / delete / update to the current batch (might be called multiple times for single prepareBatchStatement())

cancelLastQuery

public void cancelLastQuery()
            throws HibernateException
Cancel the current query statement

closeConnection

public void closeConnection(Connection conn)
            throws HibernateException
Dispose of the JDBC connection

closeQueryStatement

public void closeQueryStatement(PreparedStatement ps,
                                ResultSet rs)
            throws SQLException
Close a prepared statement opened with prepareQueryStatement()

closeStatement

public void closeStatement(PreparedStatement ps)
            throws SQLException
Close a prepared or callable statement opened using prepareStatement() or prepareCallableStatement()

closeStatements

public void closeStatements()
Close any query statements that were left lying around

executeBatch

public void executeBatch()
            throws HibernateException
Execute the batch

getResultSet

public ResultSet getResultSet(CallableStatement ps,
                              Dialect dialect)
            throws SQLException
Execute the statement and return the result set from a callable statement

getResultSet

public ResultSet getResultSet(PreparedStatement ps)
            throws SQLException
Execute the statement and return the result set

hasOpenResources

public boolean hasOpenResources()

openConnection

public Connection openConnection()
            throws HibernateException
Obtain a JDBC connection

openResourceStatsAsString

public String openResourceStatsAsString()

prepareBatchCallableStatement

public CallableStatement prepareBatchCallableStatement(String sql)
            throws SQLException,
                   HibernateException
Get a batchable callable statement to use for inserting / deleting / updating (might be called many times before a single call to executeBatch()). After setting parameters, call addToBatch - do not execute the statement explicitly.

prepareBatchStatement

public PreparedStatement prepareBatchStatement(String sql)
            throws SQLException,
                   HibernateException
Get a batchable prepared statement to use for inserting / deleting / updating (might be called many times before a single call to executeBatch()). After setting parameters, call addToBatch - do not execute the statement explicitly.

prepareCallableQueryStatement

public CallableStatement prepareCallableQueryStatement(String sql,
                                                       boolean scrollable,
                                                       ScrollMode scrollMode)
            throws SQLException,
                   HibernateException
Get a prepared statement for use in loading / querying. If not explicitly released by closeQueryStatement(), it will be released when the session is closed or disconnected.

prepareCallableStatement

public CallableStatement prepareCallableStatement(String sql)
            throws SQLException,
                   HibernateException
Get a non-batchable callable statement to use for inserting / deleting / updating.

Must be explicitly released by closeStatement(PreparedStatement) after use.


prepareQueryStatement

public PreparedStatement prepareQueryStatement(String sql,
                                               boolean scrollable,
                                               ScrollMode scrollMode)
            throws SQLException,
                   HibernateException
Get a prepared statement for use in loading / querying. If not explicitly released by closeQueryStatement(), it will be released when the session is closed or disconnected.

prepareSelectStatement

public PreparedStatement prepareSelectStatement(String sql)
            throws SQLException,
                   HibernateException
Get a non-batchable prepared statement to use for selecting. Does not result in execution of the current batch.

prepareStatement

public PreparedStatement prepareStatement(String sql)
            throws SQLException,
                   HibernateException
Get a non-batchable prepared statement to use for inserting / deleting / updating.

Must be explicitly released by closeStatement(PreparedStatement) after use.


prepareStatement

public PreparedStatement prepareStatement(String sql,
                                          String[] columnNames)
            throws SQLException,
                   HibernateException
Get a non-batchable prepared statement to use for inserting / deleting / updating. using JDBC3 getGeneratedKeys (Connection.prepareStatement(String, String[])).

Must be explicitly released by closeStatement(PreparedStatement) after use.


prepareStatement

public PreparedStatement prepareStatement(String sql,
                                          boolean useGetGeneratedKeys)
            throws SQLException,
                   HibernateException
Get a non-batchable prepared statement to use for inserting / deleting / updating, using JDBC3 getGeneratedKeys (Connection.prepareStatement(String, int)).

Must be explicitly released by closeStatement(PreparedStatement) after use.


setTransactionTimeout

public void setTransactionTimeout(int seconds)
Set the transaction timeout to seconds later than the current system time.

unsetTransactionTimeout

public void unsetTransactionTimeout()
Unset the transaction timeout, called after the end of a transaction.