Class TemporaryLobCreator

java.lang.Object
org.springframework.jdbc.support.lob.TemporaryLobCreator
All Implemented Interfaces:
Closeable, AutoCloseable, LobCreator

public class TemporaryLobCreator extends Object implements LobCreator
LobCreator implementation based on temporary LOBs, using JDBC's Connection.createBlob() / Connection.createClob() mechanism.

Used by DefaultLobHandler's DefaultLobHandler.setCreateTemporaryLob(boolean) mode. Can also be used directly to reuse the tracking and freeing of temporary LOBs.

Since:
3.2.2
Author:
Juergen Hoeller
See Also:
  • Field Details

    • logger

      protected static final Log logger
  • Constructor Details

    • TemporaryLobCreator

      public TemporaryLobCreator()
  • Method Details

    • setBlobAsBytes

      public void setBlobAsBytes(PreparedStatement ps, int paramIndex, @Nullable 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:
    • setBlobAsBinaryStream

      public void setBlobAsBinaryStream(PreparedStatement ps, int paramIndex, @Nullable 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:
    • setClobAsString

      public void setClobAsString(PreparedStatement ps, int paramIndex, @Nullable 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:
    • setClobAsAsciiStream

      public void setClobAsAsciiStream(PreparedStatement ps, int paramIndex, @Nullable 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:
    • setClobAsCharacterStream

      public void setClobAsCharacterStream(PreparedStatement ps, int paramIndex, @Nullable 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:
    • close

      public void close()
      Description copied from interface: LobCreator
      Close this LobCreator session and free its temporarily created BLOBs and CLOBs. Will not need to do anything if using PreparedStatement's standard methods, but might be necessary to free database resources if using proprietary means.

      NOTE: Needs to be invoked after the involved PreparedStatements have been executed or the affected O/R mapping sessions have been flushed. Otherwise, the database resources for the temporary BLOBs might stay allocated.

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