org.springframework.jdbc.support.lob
Interface LobCreator

All Known Implementing Classes:
DefaultLobHandler.DefaultLobCreator, OracleLobHandler.OracleLobCreator

public interface LobCreator

Interface that abstracts potentially database-specific creation of large binary fields and large text fields. Does not work with java.sql.Blob and java.sql.Clob instances in the API, as some JDBC drivers do not support these types as such.

A LobCreator represents a session for creating BLOBs: It is not thread-safe and needs to be instantiated for each statement execution or for each transaction. Each LobCreator needs to be closed after completion.

For convenient working with a PreparedStatement and a LobCreator, consider JdbcTemplate with a AbstractLobCreatingPreparedStatementCallback implementation. See the latter's javadoc for details.

Since:
04.12.2003
Author:
Juergen Hoeller
See Also:
close(), LobHandler.getLobCreator(), AbstractLobCreatingPreparedStatementCallback, DefaultLobHandler.DefaultLobCreator, OracleLobHandler.OracleLobCreator, PreparedStatement.setBlob(int, java.sql.Blob), PreparedStatement.setBinaryStream(int, java.io.InputStream, int), PreparedStatement.setString(int, java.lang.String), PreparedStatement.setAsciiStream(int, java.io.InputStream, int), PreparedStatement.setCharacterStream(int, java.io.Reader, int)

Method Summary
 void close()
          Close this LobCreator session and free its temporarily created BLOBs and CLOBs.
 void setBlobAsBinaryStream(java.sql.PreparedStatement ps, int parameterIndex, java.io.InputStream contentStream, int contentLength)
          Set the given content as binary stream on the given statement, using the given parameter index.
 void setBlobAsBytes(java.sql.PreparedStatement ps, int parameterIndex, byte[] content)
          Set the given content as bytes on the given statement, using the given parameter index.
 void setClobAsAsciiStream(java.sql.PreparedStatement ps, int parameterIndex, java.io.InputStream asciiStream, int contentLength)
          Set the given content as ASCII stream on the given statement, using the given parameter index.
 void setClobAsCharacterStream(java.sql.PreparedStatement ps, int parameterIndex, java.io.Reader characterStream, int contentLength)
          Set the given content as character stream on the given statement, using the given parameter index.
 void setClobAsString(java.sql.PreparedStatement ps, int parameterIndex, java.lang.String content)
          Set the given content as String on the given statement, using the given parameter index.
 

Method Detail

setBlobAsBytes

public void setBlobAsBytes(java.sql.PreparedStatement ps,
                           int parameterIndex,
                           byte[] content)
                    throws java.sql.SQLException
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.

Parameters:
ps - the PreparedStatement to the set the content on
parameterIndex - the parameter index to use
content - the content as byte array
Throws:
java.sql.SQLException - if thrown by JDBC methods
See Also:
PreparedStatement.setBytes(int, byte[])

setBlobAsBinaryStream

public void setBlobAsBinaryStream(java.sql.PreparedStatement ps,
                                  int parameterIndex,
                                  java.io.InputStream contentStream,
                                  int contentLength)
                           throws java.sql.SQLException
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.

Parameters:
ps - the PreparedStatement to the set the content on
parameterIndex - the parameter index to use
contentStream - the content as InputStream
Throws:
java.sql.SQLException - if thrown by JDBC methods
See Also:
PreparedStatement.setBinaryStream(int, java.io.InputStream, int)

setClobAsString

public void setClobAsString(java.sql.PreparedStatement ps,
                            int parameterIndex,
                            java.lang.String content)
                     throws java.sql.SQLException
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.

Parameters:
ps - the PreparedStatement to the set the content on
parameterIndex - the parameter index to use
content - the content as byte array
Throws:
java.sql.SQLException - if thrown by JDBC methods
See Also:
PreparedStatement.setBytes(int, byte[])

setClobAsAsciiStream

public void setClobAsAsciiStream(java.sql.PreparedStatement ps,
                                 int parameterIndex,
                                 java.io.InputStream asciiStream,
                                 int contentLength)
                          throws java.sql.SQLException
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.

Parameters:
ps - the PreparedStatement to the set the content on
parameterIndex - the parameter index to use
asciiStream - the content as InputStream
Throws:
java.sql.SQLException - if thrown by JDBC methods
See Also:
PreparedStatement.setBinaryStream(int, java.io.InputStream, int)

setClobAsCharacterStream

public void setClobAsCharacterStream(java.sql.PreparedStatement ps,
                                     int parameterIndex,
                                     java.io.Reader characterStream,
                                     int contentLength)
                              throws java.sql.SQLException
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.

Parameters:
ps - the PreparedStatement to the set the content on
parameterIndex - the parameter index to use
characterStream - the content as InputStream
Throws:
java.sql.SQLException - if thrown by JDBC methods
See Also:
PreparedStatement.setBinaryStream(int, java.io.InputStream, int)

close

public void close()
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 respectively the affected O/R mapping sessions have been flushed. Else, the database resources for the temporary BLOBs might stay allocated.



Copyright (C) 2003-2004 The Spring Framework Project.