org.springframework.jdbc.support.lob
Interface LobCreator
- 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.
According to the JDBC spec, one should be able to use setBytes/setBinaryStream
for any BLOB contents, analogously for CLOBs: Therefore, implementations should
use those direct setters if possible, for the sake of efficiency.
- Author:
- Juergen Hoeller
- Since: 04.12.2003
- See Also: close(), LobHandler.getLobCreator(), DefaultLobHandler.DefaultLobCreator, OracleLobHandler.OracleLobCreator, java.sql.PreparedStatement.setBlob(int,java.sql.Blob), java.sql.PreparedStatement.setBinaryStream(int,java.io.InputStream,int), java.sql.PreparedStatement.setString(int,java.lang.String), java.sql.PreparedStatement.setAsciiStream(int,java.io.InputStream,int), java.sql.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(PreparedStatement ps, int parameterIndex, InputStream contentStream, int contentLength) Set the given content as binary stream on the given statement, using the
given parameter index. |
void | setBlobAsBytes(PreparedStatement ps, int parameterIndex, byte[] content) Set the given content as bytes on the given statement, using the given
parameter index. |
void | setClobAsAsciiStream(PreparedStatement ps, int parameterIndex, 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 parameterIndex, 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 parameterIndex, String content) Set the given content as String on the given statement, using the given
parameter index. |
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.
setBlobAsBinaryStream
public void setBlobAsBinaryStream(PreparedStatement ps, int parameterIndex, 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:
- SQLException - if thrown by JDBC methods
- See Also:
- java.sql.PreparedStatement.setBinaryStream(int,java.io.InputStream,int)
setBlobAsBytes
public void setBlobAsBytes(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:
- SQLException - if thrown by JDBC methods
- See Also:
- java.sql.PreparedStatement.setBytes(int,byte[])
setClobAsAsciiStream
public void setClobAsAsciiStream(PreparedStatement ps, int parameterIndex, 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:
- SQLException - if thrown by JDBC methods
- See Also:
- java.sql.PreparedStatement.setBinaryStream(int,java.io.InputStream,int)
setClobAsCharacterStream
public void setClobAsCharacterStream(PreparedStatement ps, int parameterIndex, 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:
- SQLException - if thrown by JDBC methods
- See Also:
- java.sql.PreparedStatement.setBinaryStream(int,java.io.InputStream,int)
setClobAsString
public void setClobAsString(PreparedStatement ps, int parameterIndex, 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:
- SQLException - if thrown by JDBC methods
- See Also:
- java.sql.PreparedStatement.setBytes(int,byte[])