oracle.sql.BLOB
and oracle.sql.CLOB
instances, as necessary when working with Oracle's JDBC driver. Note that this LobHandler requires Oracle JDBC driver 9i or higher! While most databases are able to work with {@link DefaultLobHandler}, Oracle just accepts Blob/Clob instances created via its own proprietary BLOB/CLOB API, and additionally doesn't accept large streams for PreparedStatement's corresponding setter methods. Therefore, you need to use a strategy like this LobHandler implementation.
Needs to work on a native JDBC Connection, to be able to cast it to oracle.jdbc.OracleConnection
. If you pass in Connections from a connection pool (the usual case in a J2EE environment), you need to set an appropriate {@link org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor}to allow for automatical retrieval of the underlying native JDBC Connection. LobHandler and NativeJdbcExtractor are separate concerns, therefore they are represented by separate strategy interfaces.
Coded via reflection to avoid dependencies on Oracle classes. Even reads in Oracle constants via reflection because of different Oracle drivers (classes12, ojdbc14, ojdbc5, ojdbc6) having different constant values! As this LobHandler initializes Oracle classes on instantiation, do not define this as eager-initializing singleton if you do not want to depend on the Oracle JAR being in the class path: use "lazy-init=true" to avoid this issue. @author Juergen Hoeller @author Thomas Risberg @since 04.12.2003 @see #setNativeJdbcExtractor @see oracle.sql.BLOB @see oracle.sql.CLOB
|
|