com.pivotal.gemfirexd.internal.client.am.stmtcache

## Class JDBCStatementCache

- java.lang.Object
- - com.pivotal.gemfirexd.internal.client.am.stmtcache.JDBCStatementCache

    public final class JDBCStatementCache
    extends Object

A cache for JDBC statement objects.

The entries in the cache contains objects implementing the `java.sql.PreparedStatement` interface, and they are inserted with a key object implementing the interface `StatementKey`. The cached objects can be either `java.sql.PreparedStatement` or `java.sql.CallableStatement`. These two should be separated by using different types of keys.

The cache only contains free statement objects, and on a successful request for a cached statement the statement is removed from the cache. The cache is not intended to hold duplicate statements. The physical prepared statement should be (re-)inserted into the cache when `close` is called on the logical prepared statement using it.

There is a maximum number of cached statements associated with the cache. If this number is exceeded, the oldest entry will be thrown out. One can always throw out an entry, because the fact that it is in the cache means it is free and not in use.

### Constructor Summary

Constructors
Constructor and Description
`JDBCStatementCache(int maxSize)` Creates a new, empty JDBC statement cache.

### Method Summary

Methods
`boolean` `cacheStatement(StatementKey statementKey, PreparedStatement ps)` Cache the prepared statement if it does not already exist.
`PreparedStatement` `getCached(StatementKey statementKey)` Retrieves a cached prepared statement if one exists.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### JDBCStatementCache

    public JDBCStatementCache(int maxSize)

Creates a new, empty JDBC statement cache.

Parameters:
  `maxSize` - maximum number of statements in the cache
Throws:
  `IllegalArgumentException` - if `maxSize` is less than one

### Method Detail

#### getCached

    public PreparedStatement getCached(StatementKey statementKey)

Retrieves a cached prepared statement if one exists.

Parameters:
  `statementKey` - key for the prepared statement to look up
Returns:
  A cached statement if one exists, `null` otherwise.

#### cacheStatement

    public boolean cacheStatement(StatementKey statementKey,
                         PreparedStatement ps)

Cache the prepared statement if it does not already exist.

Parameters:
  `statementKey` - key to insert prepared statement with
  `ps` - prepared statement to cache
Returns:
  `true` if added to the cache, `false` if not.