Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.hibernate.jdbc
Class AbstractBatcher  view AbstractBatcher download AbstractBatcher.java

java.lang.Object
  extended byorg.hibernate.jdbc.AbstractBatcher
All Implemented Interfaces:
Batcher
Direct Known Subclasses:
BatchingBatcher, NonBatchingBatcher

public abstract class AbstractBatcher
extends java.lang.Object
implements Batcher

Manages prepared statements and batching.


Field Summary
private  java.sql.PreparedStatement batchUpdate
           
private  java.lang.String batchUpdateSQL
           
private  ConnectionManager connectionManager
           
private  org.hibernate.engine.SessionFactoryImplementor factory
           
private static int globalOpenPreparedStatementCount
           
private static int globalOpenResultSetCount
           
private  org.hibernate.Interceptor interceptor
           
(package private)  boolean isTransactionTimeoutSet
           
private  java.sql.PreparedStatement lastQuery
           
protected static org.apache.commons.logging.Log log
           
private  int openPreparedStatementCount
           
private  int openResultSetCount
           
private  boolean releasing
           
private  java.util.HashSet resultSetsToClose
           
protected static org.apache.commons.logging.Log SQL_LOG
           
private  java.util.HashSet statementsToClose
           
private  long transactionTimeout
           
 
Constructor Summary
AbstractBatcher(ConnectionManager connectionManager, org.hibernate.Interceptor interceptor)
           
 
Method Summary
 void abortBatch(java.sql.SQLException sqle)
          Must be called when an exception occurs
 void cancelLastQuery()
          Cancel the current query statement
 void closeConnection(java.sql.Connection conn)
          Dispose of the JDBC connection
private  void closePreparedStatement(java.sql.PreparedStatement ps)
           
private  void closeQueryStatement(java.sql.PreparedStatement ps)
           
 void closeQueryStatement(java.sql.PreparedStatement ps, java.sql.ResultSet rs)
          Close a prepared statement opened with prepareQueryStatement()
 void closeStatement(java.sql.PreparedStatement ps)
          Close a prepared or callable statement opened using prepareStatement() or prepareCallableStatement()
 void closeStatements()
          Actually releases the batcher, allowing it to cleanup internally held resources.
protected abstract  void doExecuteBatch(java.sql.PreparedStatement ps)
           
 void executeBatch()
          Execute the batch
private  java.lang.String format(java.lang.String sql)
           
private  java.sql.CallableStatement getCallableStatement(java.sql.Connection conn, java.lang.String sql, boolean scrollable)
           
protected  org.hibernate.engine.SessionFactoryImplementor getFactory()
           
private  java.sql.PreparedStatement getPreparedStatement(java.sql.Connection conn, java.lang.String sql, boolean scrollable, boolean useGetGeneratedKeys, java.lang.String[] namedGeneratedKeys, org.hibernate.ScrollMode scrollMode, boolean callable)
           
private  java.sql.PreparedStatement getPreparedStatement(java.sql.Connection conn, java.lang.String sql, boolean scrollable, org.hibernate.ScrollMode scrollMode)
           
 java.sql.ResultSet getResultSet(java.sql.CallableStatement ps, org.hibernate.dialect.Dialect dialect)
          Execute the statement and return the result set from a callable statement
 java.sql.ResultSet getResultSet(java.sql.PreparedStatement ps)
          Execute the statement and return the result set
private  java.lang.String getSQL(java.lang.String sql)
           
protected  java.sql.PreparedStatement getStatement()
           
 boolean hasOpenResources()
           
private  void log(java.lang.String sql)
           
private  void logClosePreparedStatement()
           
private  void logCloseResults()
           
private  void logOpenPreparedStatement()
           
private  void logOpenResults()
           
 java.sql.Connection openConnection()
          Obtain a JDBC connection
 java.lang.String openResourceStatsAsString()
           
 java.sql.CallableStatement prepareBatchCallableStatement(java.lang.String sql)
          Get a batchable callable statement to use for inserting / deleting / updating (might be called many times before a single call to executeBatch()).
 java.sql.PreparedStatement prepareBatchStatement(java.lang.String sql)
          Get a batchable prepared statement to use for inserting / deleting / updating (might be called many times before a single call to executeBatch()).
 java.sql.CallableStatement prepareCallableQueryStatement(java.lang.String sql, boolean scrollable, org.hibernate.ScrollMode scrollMode)
          Get a prepared statement for use in loading / querying.
 java.sql.CallableStatement prepareCallableStatement(java.lang.String sql)
          Get a non-batchable callable statement to use for inserting / deleting / updating.
private  java.lang.String preparedStatementCountsToString()
           
 java.sql.PreparedStatement prepareQueryStatement(java.lang.String sql, boolean scrollable, org.hibernate.ScrollMode scrollMode)
          Get a prepared statement for use in loading / querying.
 java.sql.PreparedStatement prepareSelectStatement(java.lang.String sql)
          Get a non-batchable prepared statement to use for selecting.
 java.sql.PreparedStatement prepareStatement(java.lang.String sql)
          Get a non-batchable prepared statement to use for inserting / deleting / updating.
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, boolean getGeneratedKeys)
          Get a non-batchable prepared statement to use for inserting / deleting / updating, using JDBC3 getGeneratedKeys (Connection.prepareStatement(String, int)>Connection.prepareStatement(String, int) 55 ).
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, java.lang.String[] columnNames)
          Get a non-batchable prepared statement to use for inserting / deleting / updating.
private  java.lang.String resultSetCountsToString()
           
private  void setStatementFetchSize(java.sql.PreparedStatement statement)
           
private  void setTimeout(java.sql.PreparedStatement result)
           
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.hibernate.jdbc.Batcher
addToBatch
 

Field Detail

globalOpenPreparedStatementCount

private static int globalOpenPreparedStatementCount

globalOpenResultSetCount

private static int globalOpenResultSetCount

openPreparedStatementCount

private int openPreparedStatementCount

openResultSetCount

private int openResultSetCount

log

protected static final org.apache.commons.logging.Log log

SQL_LOG

protected static final org.apache.commons.logging.Log SQL_LOG

connectionManager

private final ConnectionManager connectionManager

factory

private final org.hibernate.engine.SessionFactoryImplementor factory

batchUpdate

private java.sql.PreparedStatement batchUpdate

batchUpdateSQL

private java.lang.String batchUpdateSQL

statementsToClose

private java.util.HashSet statementsToClose

resultSetsToClose

private java.util.HashSet resultSetsToClose

lastQuery

private java.sql.PreparedStatement lastQuery

releasing

private boolean releasing

interceptor

private final org.hibernate.Interceptor interceptor

transactionTimeout

private long transactionTimeout

isTransactionTimeoutSet

boolean isTransactionTimeoutSet
Constructor Detail

AbstractBatcher

public AbstractBatcher(ConnectionManager connectionManager,
                       org.hibernate.Interceptor interceptor)
Method Detail

setTransactionTimeout

public void setTransactionTimeout(int seconds)
Description copied from interface: Batcher
Set the transaction timeout to seconds later than the current system time.

Specified by:
setTransactionTimeout in interface Batcher

unsetTransactionTimeout

public void unsetTransactionTimeout()
Description copied from interface: Batcher
Unset the transaction timeout, called after the end of a transaction.

Specified by:
unsetTransactionTimeout in interface Batcher

getStatement

protected java.sql.PreparedStatement getStatement()

prepareCallableStatement

public java.sql.CallableStatement prepareCallableStatement(java.lang.String sql)
                                                    throws java.sql.SQLException,
                                                           org.hibernate.HibernateException
Description copied from interface: Batcher
Get a non-batchable callable statement to use for inserting / deleting / updating.

Must be explicitly released by Batcher.closeStatement(java.sql.PreparedStatement) 55 after use.

Specified by:
prepareCallableStatement in interface Batcher

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql)
                                            throws java.sql.SQLException,
                                                   org.hibernate.HibernateException
Description copied from interface: Batcher
Get a non-batchable prepared statement to use for inserting / deleting / updating.

Must be explicitly released by Batcher.closeStatement(java.sql.PreparedStatement) 55 after use.

Specified by:
prepareStatement in interface Batcher

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   boolean getGeneratedKeys)
                                            throws java.sql.SQLException,
                                                   org.hibernate.HibernateException
Description copied from interface: Batcher
Get a non-batchable prepared statement to use for inserting / deleting / updating, using JDBC3 getGeneratedKeys (Connection.prepareStatement(String, int)>Connection.prepareStatement(String, int) 55 ).

Must be explicitly released by Batcher.closeStatement(java.sql.PreparedStatement) 55 after use.

Specified by:
prepareStatement in interface Batcher

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   java.lang.String[] columnNames)
                                            throws java.sql.SQLException,
                                                   org.hibernate.HibernateException
Description copied from interface: Batcher
Get a non-batchable prepared statement to use for inserting / deleting / updating. using JDBC3 getGeneratedKeys (Connection.prepareStatement(String, String[])>Connection.prepareStatement(String, String[]) 55 ).

Must be explicitly released by Batcher.closeStatement(java.sql.PreparedStatement) 55 after use.

Specified by:
prepareStatement in interface Batcher

prepareSelectStatement

public java.sql.PreparedStatement prepareSelectStatement(java.lang.String sql)
                                                  throws java.sql.SQLException,
                                                         org.hibernate.HibernateException
Description copied from interface: Batcher
Get a non-batchable prepared statement to use for selecting. Does not result in execution of the current batch.

Specified by:
prepareSelectStatement in interface Batcher

prepareQueryStatement

public java.sql.PreparedStatement prepareQueryStatement(java.lang.String sql,
                                                        boolean scrollable,
                                                        org.hibernate.ScrollMode scrollMode)
                                                 throws java.sql.SQLException,
                                                        org.hibernate.HibernateException
Description copied from interface: Batcher
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.

Specified by:
prepareQueryStatement in interface Batcher

prepareCallableQueryStatement

public java.sql.CallableStatement prepareCallableQueryStatement(java.lang.String sql,
                                                                boolean scrollable,
                                                                org.hibernate.ScrollMode scrollMode)
                                                         throws java.sql.SQLException,
                                                                org.hibernate.HibernateException
Description copied from interface: Batcher
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.

Specified by:
prepareCallableQueryStatement in interface Batcher

abortBatch

public void abortBatch(java.sql.SQLException sqle)
Description copied from interface: Batcher
Must be called when an exception occurs

Specified by:
abortBatch in interface Batcher

getResultSet

public java.sql.ResultSet getResultSet(java.sql.PreparedStatement ps)
                                throws java.sql.SQLException
Description copied from interface: Batcher
Execute the statement and return the result set

Specified by:
getResultSet in interface Batcher

getResultSet

public java.sql.ResultSet getResultSet(java.sql.CallableStatement ps,
                                       org.hibernate.dialect.Dialect dialect)
                                throws java.sql.SQLException
Description copied from interface: Batcher
Execute the statement and return the result set from a callable statement

Specified by:
getResultSet in interface Batcher

closeQueryStatement

public void closeQueryStatement(java.sql.PreparedStatement ps,
                                java.sql.ResultSet rs)
                         throws java.sql.SQLException
Description copied from interface: Batcher
Close a prepared statement opened with prepareQueryStatement()

Specified by:
closeQueryStatement in interface Batcher

prepareBatchStatement

public java.sql.PreparedStatement prepareBatchStatement(java.lang.String sql)
                                                 throws java.sql.SQLException,
                                                        org.hibernate.HibernateException
Description copied from interface: Batcher
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.

Specified by:
prepareBatchStatement in interface Batcher

prepareBatchCallableStatement

public java.sql.CallableStatement prepareBatchCallableStatement(java.lang.String sql)
                                                         throws java.sql.SQLException,
                                                                org.hibernate.HibernateException
Description copied from interface: Batcher
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.

Specified by:
prepareBatchCallableStatement in interface Batcher

executeBatch

public void executeBatch()
                  throws org.hibernate.HibernateException
Description copied from interface: Batcher
Execute the batch

Specified by:
executeBatch in interface Batcher

closeStatement

public void closeStatement(java.sql.PreparedStatement ps)
                    throws java.sql.SQLException
Description copied from interface: Batcher
Close a prepared or callable statement opened using prepareStatement() or prepareCallableStatement()

Specified by:
closeStatement in interface Batcher

closeQueryStatement

private void closeQueryStatement(java.sql.PreparedStatement ps)
                          throws java.sql.SQLException

closeStatements

public void closeStatements()
Actually releases the batcher, allowing it to cleanup internally held resources.

Specified by:
closeStatements in interface Batcher

doExecuteBatch

protected abstract void doExecuteBatch(java.sql.PreparedStatement ps)
                                throws java.sql.SQLException,
                                       org.hibernate.HibernateException

preparedStatementCountsToString

private java.lang.String preparedStatementCountsToString()

resultSetCountsToString

private java.lang.String resultSetCountsToString()

logOpenPreparedStatement

private void logOpenPreparedStatement()

logClosePreparedStatement

private void logClosePreparedStatement()

logOpenResults

private void logOpenResults()

logCloseResults

private void logCloseResults()

getFactory

protected org.hibernate.engine.SessionFactoryImplementor getFactory()

log

private void log(java.lang.String sql)

format

private java.lang.String format(java.lang.String sql)

getPreparedStatement

private java.sql.PreparedStatement getPreparedStatement(java.sql.Connection conn,
                                                        java.lang.String sql,
                                                        boolean scrollable,
                                                        org.hibernate.ScrollMode scrollMode)
                                                 throws java.sql.SQLException

getCallableStatement

private java.sql.CallableStatement getCallableStatement(java.sql.Connection conn,
                                                        java.lang.String sql,
                                                        boolean scrollable)
                                                 throws java.sql.SQLException

getSQL

private java.lang.String getSQL(java.lang.String sql)

getPreparedStatement

private java.sql.PreparedStatement getPreparedStatement(java.sql.Connection conn,
                                                        java.lang.String sql,
                                                        boolean scrollable,
                                                        boolean useGetGeneratedKeys,
                                                        java.lang.String[] namedGeneratedKeys,
                                                        org.hibernate.ScrollMode scrollMode,
                                                        boolean callable)
                                                 throws java.sql.SQLException

setTimeout

private void setTimeout(java.sql.PreparedStatement result)
                 throws java.sql.SQLException

closePreparedStatement

private void closePreparedStatement(java.sql.PreparedStatement ps)
                             throws java.sql.SQLException

setStatementFetchSize

private void setStatementFetchSize(java.sql.PreparedStatement statement)
                            throws java.sql.SQLException

openConnection

public java.sql.Connection openConnection()
                                   throws org.hibernate.HibernateException
Description copied from interface: Batcher
Obtain a JDBC connection

Specified by:
openConnection in interface Batcher

closeConnection

public void closeConnection(java.sql.Connection conn)
                     throws org.hibernate.HibernateException
Description copied from interface: Batcher
Dispose of the JDBC connection

Specified by:
closeConnection in interface Batcher

cancelLastQuery

public void cancelLastQuery()
                     throws org.hibernate.HibernateException
Description copied from interface: Batcher
Cancel the current query statement

Specified by:
cancelLastQuery in interface Batcher

hasOpenResources

public boolean hasOpenResources()
Specified by:
hasOpenResources in interface Batcher

openResourceStatsAsString

public java.lang.String openResourceStatsAsString()
Specified by:
openResourceStatsAsString in interface Batcher