As far as I see, C3P0 doesn't allow access to native
JDBC objects (i.e. native Connections, Statements,
ResultSets) in any way. While it may make sense to
forbid such access by default (maybe allowing it via a
configuration property), I consider it very restrictive to
not provide any such means in the first place. As a
counter-example, consider Jakarta's Commons DBCP
which allows such access to all its wrapped objects.
My main concern is LOB handling with Oracle: You
absolutely need access to the native OracleConnection
there; AFAIK, there is no way around this. Currently,
C3P0 cannot be used with applications that create
Oracle LOBs, simply because there is no way to retrieve
the native OracleConnection with C3P0.
FYI, I've implemented pluggable LOB handling and native
JDBC extraction for the Spring Framework's JDBC
support: Applications are supposed to delegate to those
strategies rather than hard-code vendor-specific LOB
handling or pool-specific JDBC extraction. Ideally, I'd like
to be able to provide an implementation of Spring's
NativeJdbcExtractor interface for C3P0.