org.hibernate.jdbc
Interface Batcher

All Known Implementing Classes:
AbstractBatcher

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:
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, boolean useGetGeneratedKeys)
          Get a non-batchable prepared statement to use for inserting / deleting / updating, using JDBC3 getGeneratedKeys (Connection.prepareStatement(String, int)).
 PreparedStatement prepareStatement(String sql, String[] columnNames)
          Get a non-batchable prepared statement to use for inserting / deleting / updating.
 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 Detail

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.

Throws:
SQLException
HibernateException

closeQueryStatement

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

Throws:
SQLException

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.

Throws:
SQLException
HibernateException

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.

Throws:
SQLException
HibernateException

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(java.sql.PreparedStatement) after use.

Throws:
SQLException
HibernateException

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(java.sql.PreparedStatement) after use.

Throws:
SQLException
HibernateException

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(java.sql.PreparedStatement) after use.

Throws:
SQLException
HibernateException

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(java.sql.PreparedStatement) after use.

Throws:
SQLException
HibernateException

closeStatement

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

Throws:
SQLException

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.

Throws:
SQLException
HibernateException
See Also:
addToBatch(org.hibernate.jdbc.Expectation)

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.

Throws:
SQLException
HibernateException
See Also:
addToBatch(org.hibernate.jdbc.Expectation)

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())

Throws:
SQLException
HibernateException

executeBatch

public void executeBatch()
                  throws HibernateException
Execute the batch

Throws:
HibernateException

closeStatements

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


getResultSet

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

Throws:
SQLException

getResultSet

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

Throws:
SQLException

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

cancelLastQuery

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

Throws:
HibernateException

hasOpenResources

public boolean hasOpenResources()

openResourceStatsAsString

public String openResourceStatsAsString()

openConnection

public Connection openConnection()
                          throws HibernateException
Obtain a JDBC connection

Throws:
HibernateException

closeConnection

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

Throws:
HibernateException

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.