|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.ojb.broker.platforms.PlatformDefaultImpl
org.apache.ojb.broker.platforms.PlatformOracleImpl
org.apache.ojb.broker.platforms.PlatformOracle9iImpl
This class is a concrete implementation of Platform. Provides
an implementation that works around some issues with Oracle in general and
Oracle 9i's Thin driver in particular.
NOTE: When using BEA WebLogic and BLOB/CLOB datatypes, the physical connection will be
used causing WebLogic to mark it as "infected" and discard it when
the logicical connection is closed. You can change this behavior by setting the
RemoveInfectedConnectionsEnabled attribute on a connection pool.
see WebLogic docs.
Optimization: Oracle Batching (not standard JDBC batching)
see http://technet.oracle.com/products/oracle9i/daily/jun07.html
Optimization: Oracle Prefetching
see http://otn.oracle.com/sample_code/tech/java/sqlj_jdbc/files/advanced/RowPrefetchSample/Readme.html
Optimization: Oracle Statement Caching
see http://otn.oracle.com/sample_code/tech/java/sqlj_jdbc/files/jdbc30/StmtCacheSample/Readme.html
TODO: Optimization: use ROWNUM to minimize the effects of not having server side cursors
see http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:127412348064
Platform,
PlatformDefaultImpl,
PlatformOracleImpl| Field Summary |
| Fields inherited from interface org.apache.ojb.broker.accesslayer.JoinSyntaxTypes |
ORACLE_JOIN_SYNTAX, SQL92_JOIN_SYNTAX, SQL92_NOPAREN_JOIN_SYNTAX, SYBASE_JOIN_SYNTAX |
| Constructor Summary | |
PlatformOracle9iImpl()
Default constructor. |
|
| Method Summary | |
void |
addBatch(java.sql.PreparedStatement stmt)
Try Oracle update batching and call executeUpdate or revert to JDBC update batching. |
void |
afterStatementCreate(java.sql.Statement stmt)
Performs platform-specific operations on each statement. |
void |
beforeBatch(java.sql.PreparedStatement stmt)
Try Oracle update batching and call setExecuteBatch or revert to JDBC update batching. |
int[] |
executeBatch(java.sql.PreparedStatement stmt)
Try Oracle update batching and call sendBatch or revert to JDBC update batching. |
byte |
getJoinSyntaxType()
Get join syntax type for this RDBMS. |
void |
initializeJdbcConnection(JdbcConnectionDescriptor jcd,
java.sql.Connection conn)
Enables Oracle statement caching and row prefetching if supported by the JDBC-driver. |
void |
setObjectForStatement(java.sql.PreparedStatement ps,
int index,
java.lang.Object value,
int sqlType)
For objects beyond 4k, weird things happen in Oracle if you try to use "setBytes", so for all cases it's better to use setBinaryStream. |
| Methods inherited from class org.apache.ojb.broker.platforms.PlatformOracleImpl |
createSequenceQuery, createSequenceQuery, dropSequenceQuery, nextSequenceQuery, prepareNextValProcedureStatement, registerOutResultSet |
| Methods inherited from class org.apache.ojb.broker.platforms.PlatformDefaultImpl |
addPagingSql, afterStatementClose, beforeStatementClose, bindPagingParameters, bindPagingParametersFirst, changeAutoCommitState, concatenate, getEscapeClause, getLastInsertIdentityQuery, setNullForStatement, supportsBatchOperations, supportsMultiColumnCountDistinct, supportsPaging, useCountForResultsetSize |
| Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
public PlatformOracle9iImpl()
| Method Detail |
public void initializeJdbcConnection(JdbcConnectionDescriptor jcd,
java.sql.Connection conn)
throws PlatformException
initializeJdbcConnection in interface PlatforminitializeJdbcConnection in class PlatformDefaultImpljcd - the OJB JdbcConnectionDescriptor (metadata) for the connection to be initializedconn - the Connection-object (physical) to be initialized
PlatformExceptionPlatformDefaultImpl.initializeJdbcConnection(org.apache.ojb.broker.metadata.JdbcConnectionDescriptor, java.sql.Connection),
Oracle TechNet Statement Caching Sample,
Oracle TechNet Row Pre-fetch Samplepublic void afterStatementCreate(java.sql.Statement stmt)
afterStatementCreate in interface PlatformafterStatementCreate in class PlatformOracleImplstmt - the statement just created
public void beforeBatch(java.sql.PreparedStatement stmt)
throws PlatformException
beforeBatch in interface PlatformbeforeBatch in class PlatformDefaultImplstmt - the prepared statement to be used for batching
PlatformException - upon JDBC failure
public void addBatch(java.sql.PreparedStatement stmt)
throws PlatformException
addBatch in interface PlatformaddBatch in class PlatformDefaultImplstmt - the statement beeing added to the batch
PlatformException - upon JDBC failure
public int[] executeBatch(java.sql.PreparedStatement stmt)
throws PlatformException
executeBatch in interface PlatformexecuteBatch in class PlatformDefaultImplstmt - the batched prepared statement about to be executed
null if Oracle update batching is used,
since it is impossible to dissolve total row count into distinct
statement counts. If JDBC update batching is used, an int array is
returned containing number of updated rows for each batched statement.
PlatformException - upon JDBC failure
public void setObjectForStatement(java.sql.PreparedStatement ps,
int index,
java.lang.Object value,
int sqlType)
throws java.sql.SQLException
PlatformOracleImpl
setObjectForStatement in interface PlatformsetObjectForStatement in class PlatformOracleImpljava.sql.SQLExceptionPlatform.setObjectForStatement(java.sql.PreparedStatement, int, java.lang.Object, int)public byte getJoinSyntaxType()
getJoinSyntaxType in interface PlatformgetJoinSyntaxType in class PlatformOracleImpl
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||