org.springframework.jdbc.support.lob

## Class OracleLobHandler.OracleLobCreator

- java.lang.Object
- - org.springframework.jdbc.support.lob.OracleLobHandler.OracleLobCreator

All Implemented Interfaces:
  Closeable, AutoCloseable, LobCreator

Enclosing class:
  OracleLobHandler

    protected class OracleLobHandler.OracleLobCreator
    extends Object
    implements LobCreator

LobCreator implementation for Oracle databases. Creates Oracle-style temporary BLOBs and CLOBs that it frees on close.

See Also:
  `close()`

### Constructor Summary

Constructors
`protected` `OracleLobHandler.OracleLobCreator()`

### Method Summary

Methods
`void` `close()` Free all temporary BLOBs and CLOBs created by this creator.
`protected Object` `createLob(PreparedStatement ps, boolean clob, OracleLobHandler.LobCallback callback)` Create a LOB instance for the given PreparedStatement, populating it via the given callback.
`protected Connection` `getOracleConnection(PreparedStatement ps)` Retrieve the underlying OracleConnection, using a NativeJdbcExtractor if set.
`protected Object` `prepareLob(Connection con, Class lobClass)` Create and open an oracle.sql.BLOB/CLOB instance via reflection.
`void` `setBlobAsBinaryStream(PreparedStatement ps, int paramIndex, InputStream binaryStream, int contentLength)` Set the given content as binary stream on the given statement, using the given parameter index.
`void` `setBlobAsBytes(PreparedStatement ps, int paramIndex, byte[] content)` Set the given content as bytes on the given statement, using the given parameter index.
`void` `setClobAsAsciiStream(PreparedStatement ps, int paramIndex, InputStream asciiStream, int contentLength)` Set the given content as ASCII stream on the given statement, using the given parameter index.
`void` `setClobAsCharacterStream(PreparedStatement ps, int paramIndex, Reader characterStream, int contentLength)` Set the given content as character stream on the given statement, using the given parameter index.
`void` `setClobAsString(PreparedStatement ps, int paramIndex, String content)` Set the given content as String on the given statement, using the given parameter index.

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

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

### Constructor Detail

#### OracleLobHandler.OracleLobCreator

    protected OracleLobHandler.OracleLobCreator()

### Method Detail

#### setBlobAsBytes

    public void setBlobAsBytes(PreparedStatement ps,
                      int paramIndex,
                      byte[] content)
                        throws SQLException

Description copied from interface: `LobCreator`
Set the given content as bytes on the given statement, using the given parameter index. Might simply invoke `PreparedStatement.setBytes` or create a Blob instance for it, depending on the database and driver.

Specified by:
  `setBlobAsBytes` in interface `LobCreator`
Parameters:
  `ps` - the PreparedStatement to the set the content on
  `paramIndex` - the parameter index to use
  `content` - the content as byte array, or `null` for SQL NULL
Throws:
  `SQLException` - if thrown by JDBC methods
See Also:
  `PreparedStatement.setBytes(int, byte[])`

#### setBlobAsBinaryStream

    public void setBlobAsBinaryStream(PreparedStatement ps,
                             int paramIndex,
                             InputStream binaryStream,
                             int contentLength)
                               throws SQLException

Description copied from interface: `LobCreator`
Set the given content as binary stream on the given statement, using the given parameter index. Might simply invoke `PreparedStatement.setBinaryStream` or create a Blob instance for it, depending on the database and driver.

Specified by:
  `setBlobAsBinaryStream` in interface `LobCreator`
Parameters:
  `ps` - the PreparedStatement to the set the content on
  `paramIndex` - the parameter index to use
  `binaryStream` - the content as binary stream, or `null` for SQL NULL
Throws:
  `SQLException` - if thrown by JDBC methods
See Also:
  `PreparedStatement.setBinaryStream(int, java.io.InputStream, int)`

#### setClobAsString

    public void setClobAsString(PreparedStatement ps,
                       int paramIndex,
                       String content)
                         throws SQLException

Description copied from interface: `LobCreator`
Set the given content as String on the given statement, using the given parameter index. Might simply invoke `PreparedStatement.setString` or create a Clob instance for it, depending on the database and driver.

Specified by:
  `setClobAsString` in interface `LobCreator`
Parameters:
  `ps` - the PreparedStatement to the set the content on
  `paramIndex` - the parameter index to use
  `content` - the content as String, or `null` for SQL NULL
Throws:
  `SQLException` - if thrown by JDBC methods
See Also:
  `PreparedStatement.setBytes(int, byte[])`

#### setClobAsAsciiStream

    public void setClobAsAsciiStream(PreparedStatement ps,
                            int paramIndex,
                            InputStream asciiStream,
                            int contentLength)
                              throws SQLException

Description copied from interface: `LobCreator`
Set the given content as ASCII stream on the given statement, using the given parameter index. Might simply invoke `PreparedStatement.setAsciiStream` or create a Clob instance for it, depending on the database and driver.

Specified by:
  `setClobAsAsciiStream` in interface `LobCreator`
Parameters:
  `ps` - the PreparedStatement to the set the content on
  `paramIndex` - the parameter index to use
  `asciiStream` - the content as ASCII stream, or `null` for SQL NULL
Throws:
  `SQLException` - if thrown by JDBC methods
See Also:
  `PreparedStatement.setAsciiStream(int, java.io.InputStream, int)`

#### setClobAsCharacterStream

    public void setClobAsCharacterStream(PreparedStatement ps,
                                int paramIndex,
                                Reader characterStream,
                                int contentLength)
                                  throws SQLException

Description copied from interface: `LobCreator`
Set the given content as character stream on the given statement, using the given parameter index. Might simply invoke `PreparedStatement.setCharacterStream` or create a Clob instance for it, depending on the database and driver.

Specified by:
  `setClobAsCharacterStream` in interface `LobCreator`
Parameters:
  `ps` - the PreparedStatement to the set the content on
  `paramIndex` - the parameter index to use
  `characterStream` - the content as character stream, or `null` for SQL NULL
Throws:
  `SQLException` - if thrown by JDBC methods
See Also:
  `PreparedStatement.setCharacterStream(int, java.io.Reader, int)`

#### createLob

    protected Object createLob(PreparedStatement ps,
                   boolean clob,
                   OracleLobHandler.LobCallback callback)
                        throws SQLException

Create a LOB instance for the given PreparedStatement, populating it via the given callback.

Throws:
  `SQLException`

#### getOracleConnection

    protected Connection getOracleConnection(PreparedStatement ps)
                                      throws SQLException,
                                             ClassNotFoundException

Retrieve the underlying OracleConnection, using a NativeJdbcExtractor if set.

Throws:
  `SQLException`
  `ClassNotFoundException`

#### prepareLob

    protected Object prepareLob(Connection con,
                    Class lobClass)
                         throws Exception

Create and open an oracle.sql.BLOB/CLOB instance via reflection.

Throws:
  `Exception`

#### close

    public void close()

Free all temporary BLOBs and CLOBs created by this creator.

Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `LobCreator`