snaq.db
Class CacheConnection

java.lang.Object
  extended by snaq.db.CacheConnection
All Implemented Interfaces:
Connection, Wrapper, Reusable

public final class CacheConnection
extends Object
implements Connection, Reusable

Connection wrapper that implements statement caching.

Author:
Giles Winstanley
See Also:
CachedStatement, CachedPreparedStatement, CachedCallableStatement

Field Summary
 
Fields inherited from interface java.sql.Connection
TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE
 
Constructor Summary
CacheConnection(ConnectionPool pool, Connection con)
          Creates a new CacheConnection object, using the supplied Connection.
 
Method Summary
 void clearWarnings()
           
 void close()
          Overrides method to provide caching support.
 void commit()
           
 Array createArrayOf(String typeName, Object[] elements)
           
 Blob createBlob()
           
 Clob createClob()
           
 NClob createNClob()
           
 SQLXML createSQLXML()
           
 Statement createStatement()
          Overrides method to provide caching support.
 Statement createStatement(int resultSetType, int resultSetConcurrency)
          Overrides method to provide caching support.
 Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
          Overrides method to provide caching support.
 Struct createStruct(String typeName, Object[] attributes)
           
 boolean getAutoCommit()
           
 String getCatalog()
           
 Properties getClientInfo()
           
 String getClientInfo(String name)
           
 Connection getConnection()
           
 Connection getDelegateConnection()
          Returns the delegate Connection instance for which this provides a wrapper.
 int getHoldability()
           
 DatabaseMetaData getMetaData()
           
 int getOpenCallableStatementCount()
          Returns the current number of CallableStatement instances that are in use.
 int getOpenNonCachableStatementCount()
          Returns the current number of non-cachable statements that are in use.
 int getOpenPreparedStatementCount()
          Returns the current number of PreparedStatement instances that are in use (not including CallableStatement instances).
 int getOpenStatementCount()
          Returns the current number of Statement instances that are in use (not including PreparedStatement or CallableStatement instances).
 int getSpareCallableStatementCount()
          Returns the current number of spare CallableStatement instances that are cached.
 int getSparePreparedStatementCount()
          Returns the current number of spare PreparedStatement instances that are cached.
 int getSpareStatementCount()
          Returns the current number of spare Statements that are cached.
 int getTransactionIsolation()
           
 Map<String,Class<?>> getTypeMap()
           
 SQLWarning getWarnings()
           
 boolean isCachingAllStatements()
          Returns whether caching of all Statement instances is enabled.
 boolean isCachingCallableStatements()
          Returns whether caching of CallableStatement instances is enabled.
 boolean isCachingPreparedStatements()
          Returns whether caching of PreparedStatement instances is enabled.
 boolean isCachingStatements()
          Returns whether caching of standard Statement instances is enabled.
 boolean isClosed()
           
 boolean isDirty()
          Determines if this object is "dirty" (i.e.
 boolean isReadOnly()
           
 boolean isValid(int timeout)
           
 boolean isWrapperFor(Class<?> iface)
           
 String nativeSQL(String sql)
           
 CallableStatement prepareCall(String sql)
          Overrides method to provide caching support.
 CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency)
          Overrides method to provide caching support.
 CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
          Overrides method to provide caching support.
 PreparedStatement prepareStatement(String sql)
          Overrides method to provide caching support.
 PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)
           
 PreparedStatement prepareStatement(String sql, int[] columnIndexes)
           
 PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
          Overrides method to provide caching support.
 PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
          Overrides method to provide caching support.
 PreparedStatement prepareStatement(String sql, String[] columnNames)
           
 void recycle()
          Puts the connection back in a state where it can be reused.
 void release()
          Destroys the wrapped Connection instance.
 void releaseSavepoint(Savepoint savepoint)
           
 void rollback()
           
 void rollback(Savepoint savepoint)
           
 void setAutoCommit(boolean autoCommit)
           
 void setCacheAll(boolean cache)
          Sets whether to use caching for all types of Statement.
 void setCacheCallableStatements(boolean cache)
          Sets whether to use caching for CallableStatement instances.
 void setCachePreparedStatements(boolean cache)
          Sets whether to use caching for PreparedStatement instances.
 void setCacheStatements(boolean cache)
          Sets whether to use caching for Statement instances.
 void setCatalog(String catalog)
           
 void setClientInfo(Properties properties)
           
 void setClientInfo(String name, String value)
           
 void setHoldability(int holdability)
           
 void setReadOnly(boolean readOnly)
           
 Savepoint setSavepoint()
           
 Savepoint setSavepoint(String name)
           
 void setTransactionIsolation(int level)
           
 void setTypeMap(Map<String,Class<?>> map)
           
 void statementClosed(CachedStatement s)
          Callback invoked when a CachedStatement is closed.
<T> T
unwrap(Class<T> iface)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CacheConnection

public CacheConnection(ConnectionPool pool,
                       Connection con)
Creates a new CacheConnection object, using the supplied Connection.

Parameters:
pool - ConnectionPool to which this CacheConnection belongs
con - Connection instance to which database calls should be delegated
Method Detail

setCacheStatements

public void setCacheStatements(boolean cache)
Sets whether to use caching for Statement instances.

Parameters:
cache - whether to cache Statement instances

setCachePreparedStatements

public void setCachePreparedStatements(boolean cache)
Sets whether to use caching for PreparedStatement instances.

Parameters:
cache - whether to cache PreparedStatement instances

setCacheCallableStatements

public void setCacheCallableStatements(boolean cache)
Sets whether to use caching for CallableStatement instances.

Parameters:
cache - whether to cache CallableStatement instances

setCacheAll

public void setCacheAll(boolean cache)
Sets whether to use caching for all types of Statement.

Parameters:
cache - whether to cache all types of statement

isCachingAllStatements

public boolean isCachingAllStatements()
Returns whether caching of all Statement instances is enabled.

Returns:
true if all types of statements are flagged for caching, false otherwise.

isCachingStatements

public boolean isCachingStatements()
Returns whether caching of standard Statement instances is enabled.

Returns:
true if Statement instances are flagged for caching, false otherwise.

isCachingPreparedStatements

public boolean isCachingPreparedStatements()
Returns whether caching of PreparedStatement instances is enabled.

Returns:
true if PreparedStatement instances are flagged for caching, false otherwise.

isCachingCallableStatements

public boolean isCachingCallableStatements()
Returns whether caching of CallableStatement instances is enabled.

Returns:
true if CallableStatement instances are flagged for caching, false otherwise.

getDelegateConnection

public Connection getDelegateConnection()
Returns the delegate Connection instance for which this provides a wrapper. This is provided as a convenience method for using database-specific features for which the Connection object needs to be upcast. (e.g. to use Oracle-specific features needs to be cast to oracle.jdbc.OracleConnection). To maintain the stability of the pooling system it is important that the raw connection is not destabilized when used in this way.

Returns:
the delegate Connection instance being used for database access.

createStatement

public Statement createStatement()
                          throws SQLException
Overrides method to provide caching support.

Specified by:
createStatement in interface Connection
Throws:
SQLException

createStatement

public Statement createStatement(int resultSetType,
                                 int resultSetConcurrency)
                          throws SQLException
Overrides method to provide caching support.

Specified by:
createStatement in interface Connection
Throws:
SQLException

createStatement

public Statement createStatement(int resultSetType,
                                 int resultSetConcurrency,
                                 int resultSetHoldability)
                          throws SQLException
Overrides method to provide caching support.

Specified by:
createStatement in interface Connection
Throws:
SQLException

prepareStatement

public PreparedStatement prepareStatement(String sql)
                                   throws SQLException
Overrides method to provide caching support.

Specified by:
prepareStatement in interface Connection
Throws:
SQLException

prepareStatement

public PreparedStatement prepareStatement(String sql,
                                          int resultSetType,
                                          int resultSetConcurrency)
                                   throws SQLException
Overrides method to provide caching support.

Specified by:
prepareStatement in interface Connection
Throws:
SQLException

prepareStatement

public PreparedStatement prepareStatement(String sql,
                                          int resultSetType,
                                          int resultSetConcurrency,
                                          int resultSetHoldability)
                                   throws SQLException
Overrides method to provide caching support.

Specified by:
prepareStatement in interface Connection
Throws:
SQLException

prepareCall

public CallableStatement prepareCall(String sql)
                              throws SQLException
Overrides method to provide caching support.

Specified by:
prepareCall in interface Connection
Throws:
SQLException

prepareCall

public CallableStatement prepareCall(String sql,
                                     int resultSetType,
                                     int resultSetConcurrency)
                              throws SQLException
Overrides method to provide caching support.

Specified by:
prepareCall in interface Connection
Throws:
SQLException

prepareCall

public CallableStatement prepareCall(String sql,
                                     int resultSetType,
                                     int resultSetConcurrency,
                                     int resultSetHoldability)
                              throws SQLException
Overrides method to provide caching support.

Specified by:
prepareCall in interface Connection
Throws:
SQLException

statementClosed

public void statementClosed(CachedStatement s)
                     throws SQLException
Callback invoked when a CachedStatement is closed. This method should only be called by CachedStatement instances.

Throws:
SQLException

nativeSQL

public String nativeSQL(String sql)
                 throws SQLException
Specified by:
nativeSQL in interface Connection
Throws:
SQLException

setAutoCommit

public void setAutoCommit(boolean autoCommit)
                   throws SQLException
Specified by:
setAutoCommit in interface Connection
Throws:
SQLException

getAutoCommit

public boolean getAutoCommit()
                      throws SQLException
Specified by:
getAutoCommit in interface Connection
Throws:
SQLException

commit

public void commit()
            throws SQLException
Specified by:
commit in interface Connection
Throws:
SQLException

rollback

public void rollback()
              throws SQLException
Specified by:
rollback in interface Connection
Throws:
SQLException

recycle

public void recycle()
             throws SQLException
Puts the connection back in a state where it can be reused. This method should only be called by ConnectionPool instances.

Specified by:
recycle in interface Reusable
Throws:
SQLException

isDirty

public boolean isDirty()
Determines if this object is "dirty" (i.e. unable to be recycled).

Specified by:
isDirty in interface Reusable

close

public void close()
           throws SQLException
Overrides method to provide caching support.

Specified by:
close in interface Connection
Throws:
SQLException

getSpareStatementCount

public int getSpareStatementCount()
Returns the current number of spare Statements that are cached.


getOpenStatementCount

public int getOpenStatementCount()
Returns the current number of Statement instances that are in use (not including PreparedStatement or CallableStatement instances).


getSparePreparedStatementCount

public int getSparePreparedStatementCount()
Returns the current number of spare PreparedStatement instances that are cached.


getOpenPreparedStatementCount

public int getOpenPreparedStatementCount()
Returns the current number of PreparedStatement instances that are in use (not including CallableStatement instances).


getSpareCallableStatementCount

public int getSpareCallableStatementCount()
Returns the current number of spare CallableStatement instances that are cached.


getOpenCallableStatementCount

public int getOpenCallableStatementCount()
Returns the current number of CallableStatement instances that are in use.


getOpenNonCachableStatementCount

public int getOpenNonCachableStatementCount()
Returns the current number of non-cachable statements that are in use. (Currently only some PreparedStatement instances are non-cachable by virtue of a request made at creation for support for auto-generated keys.)

See Also:
prepareStatement(String, int), prepareStatement(String, int[]), prepareStatement(String, String[])

release

public void release()
             throws SQLException
Destroys the wrapped Connection instance. This method should only be called by ConnectionPool instances.

Throws:
SQLException

isClosed

public boolean isClosed()
                 throws SQLException
Specified by:
isClosed in interface Connection
Throws:
SQLException

getMetaData

public DatabaseMetaData getMetaData()
                             throws SQLException
Specified by:
getMetaData in interface Connection
Throws:
SQLException

setReadOnly

public void setReadOnly(boolean readOnly)
                 throws SQLException
Specified by:
setReadOnly in interface Connection
Throws:
SQLException

isReadOnly

public boolean isReadOnly()
                   throws SQLException
Specified by:
isReadOnly in interface Connection
Throws:
SQLException

setCatalog

public void setCatalog(String catalog)
                throws SQLException
Specified by:
setCatalog in interface Connection
Throws:
SQLException

getCatalog

public String getCatalog()
                  throws SQLException
Specified by:
getCatalog in interface Connection
Throws:
SQLException

setTransactionIsolation

public void setTransactionIsolation(int level)
                             throws SQLException
Specified by:
setTransactionIsolation in interface Connection
Throws:
SQLException

getTransactionIsolation

public int getTransactionIsolation()
                            throws SQLException
Specified by:
getTransactionIsolation in interface Connection
Throws:
SQLException

getWarnings

public SQLWarning getWarnings()
                       throws SQLException
Specified by:
getWarnings in interface Connection
Throws:
SQLException

clearWarnings

public void clearWarnings()
                   throws SQLException
Specified by:
clearWarnings in interface Connection
Throws:
SQLException

getTypeMap

public Map<String,Class<?>> getTypeMap()
                                throws SQLException
Specified by:
getTypeMap in interface Connection
Throws:
SQLException

setTypeMap

public void setTypeMap(Map<String,Class<?>> map)
                throws SQLException
Specified by:
setTypeMap in interface Connection
Throws:
SQLException

setHoldability

public void setHoldability(int holdability)
                    throws SQLException
Specified by:
setHoldability in interface Connection
Throws:
SQLException

getHoldability

public int getHoldability()
                   throws SQLException
Specified by:
getHoldability in interface Connection
Throws:
SQLException

setSavepoint

public Savepoint setSavepoint()
                       throws SQLException
Specified by:
setSavepoint in interface Connection
Throws:
SQLException

setSavepoint

public Savepoint setSavepoint(String name)
                       throws SQLException
Specified by:
setSavepoint in interface Connection
Throws:
SQLException

rollback

public void rollback(Savepoint savepoint)
              throws SQLException
Specified by:
rollback in interface Connection
Throws:
SQLException

releaseSavepoint

public void releaseSavepoint(Savepoint savepoint)
                      throws SQLException
Specified by:
releaseSavepoint in interface Connection
Throws:
SQLException

prepareStatement

public PreparedStatement prepareStatement(String sql,
                                          int autoGeneratedKeys)
                                   throws SQLException
Specified by:
prepareStatement in interface Connection
Throws:
SQLException

prepareStatement

public PreparedStatement prepareStatement(String sql,
                                          int[] columnIndexes)
                                   throws SQLException
Specified by:
prepareStatement in interface Connection
Throws:
SQLException

prepareStatement

public PreparedStatement prepareStatement(String sql,
                                          String[] columnNames)
                                   throws SQLException
Specified by:
prepareStatement in interface Connection
Throws:
SQLException

getConnection

public Connection getConnection()
                         throws SQLException
Throws:
SQLException

isWrapperFor

public boolean isWrapperFor(Class<?> iface)
                     throws SQLException
Specified by:
isWrapperFor in interface Wrapper
Throws:
SQLException

unwrap

public <T> T unwrap(Class<T> iface)
         throws SQLException
Specified by:
unwrap in interface Wrapper
Throws:
SQLException

createClob

public Clob createClob()
                throws SQLException
Specified by:
createClob in interface Connection
Throws:
SQLException

createBlob

public Blob createBlob()
                throws SQLException
Specified by:
createBlob in interface Connection
Throws:
SQLException

createNClob

public NClob createNClob()
                  throws SQLException
Specified by:
createNClob in interface Connection
Throws:
SQLException

createSQLXML

public SQLXML createSQLXML()
                    throws SQLException
Specified by:
createSQLXML in interface Connection
Throws:
SQLException

isValid

public boolean isValid(int timeout)
                throws SQLException
Specified by:
isValid in interface Connection
Throws:
SQLException

setClientInfo

public void setClientInfo(String name,
                          String value)
                   throws SQLClientInfoException
Specified by:
setClientInfo in interface Connection
Throws:
SQLClientInfoException

setClientInfo

public void setClientInfo(Properties properties)
                   throws SQLClientInfoException
Specified by:
setClientInfo in interface Connection
Throws:
SQLClientInfoException

getClientInfo

public String getClientInfo(String name)
                     throws SQLException
Specified by:
getClientInfo in interface Connection
Throws:
SQLException

getClientInfo

public Properties getClientInfo()
                         throws SQLException
Specified by:
getClientInfo in interface Connection
Throws:
SQLException

createArrayOf

public Array createArrayOf(String typeName,
                           Object[] elements)
                    throws SQLException
Specified by:
createArrayOf in interface Connection
Throws:
SQLException

createStruct

public Struct createStruct(String typeName,
                           Object[] attributes)
                    throws SQLException
Specified by:
createStruct in interface Connection
Throws:
SQLException