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
    Modifier | Constructor and Description
    --- | ---
    `protected` | `OracleLobHandler.OracleLobCreator()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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`