|
||||||||||
| 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
public class PlatformOracleImpl
This class is a concrete implementation of Platform. Provides an implementation
that works around some issues with Oracle in general and Oracle's Thin driver in particular.
Implementation configuration properties:
| Property Key | Property Values |
| sequenceStart |
DEPRECATED. Database sequence specific property. Specifies the first sequence number to be generated. Allowed: 1 or greater. |
| seq.start |
Database sequence specific property. Specifies the first sequence number to be generated. Allowed: 1 or greater. |
| seq.incrementBy |
Database sequence specific property. Specifies the interval between sequence numbers. This value can be any positive or negative integer, but it cannot be 0. |
| seq.maxValue |
Database sequence specific property. Set max value for sequence numbers. |
| seq.minValue |
Database sequence specific property. Set min value for sequence numbers. |
| seq.cycle |
Database sequence specific property. If true, specifies that the sequence continues to generate values after reaching either its maximum or minimum value. If false, specifies that the sequence cannot generate more values after reaching its maximum or minimum value. |
| seq.cache |
Database sequence specific property. Specifies how many values of the sequence Oracle preallocates and keeps in memory for faster access. Allowed values: 2 or greater. If set 0, an explicite nocache expression will be set. |
| seq.order |
Database sequence specific property. If set true, guarantees that sequence numbers are generated in order of request. If false, a no order expression will be set. |
| Field Summary | |
|---|---|
protected static int |
ORACLE_JDBC_TYPE_CURSOR
Field value of oracle.jdbc.OracleTypes.CURSOR. |
protected static int |
THIN_BLOB_MAX_SIZE
|
protected static int |
THIN_CLOB_MAX_SIZE
|
protected static String |
THIN_URL_PREFIX
|
| Fields inherited from class org.apache.ojb.broker.platforms.PlatformDefaultImpl |
|---|
log, m_batchUpdatesChecked, m_supportsBatchUpdates |
| 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 | |
|---|---|
PlatformOracleImpl()
Default constructor. |
|
| Method Summary | |
|---|---|
void |
afterStatementCreate(Statement stmt)
In Oracle we set escape processing explizit 'true' after a statement was created. |
protected void |
changePreparedStatementResultSetType(PreparedStatement ps)
Attempts to modify a private member in the Oracle thin driver's resultset to allow proper setting of large binary streams. |
String |
createSequenceQuery(String sequenceName)
Override this method to enable database based sequence generation |
String |
createSequenceQuery(String sequenceName,
Properties prop)
Returns a query to create a sequence entry. |
String |
dropSequenceQuery(String sequenceName)
Override this method to enable database based sequence generation |
byte |
getJoinSyntaxType()
Get join syntax type for this RDBMS - one on of the constants from JoinSyntaxType interface |
protected void |
initOracleReflectedVars()
Initializes static variables needed for getting Oracle-specific JDBC types. |
protected static boolean |
isUsingOracleThinDriver(Connection conn)
Checks if the supplied connection is using the Oracle thin driver. |
String |
nextSequenceQuery(String sequenceName)
Override this method to enable database based sequence generation |
CallableStatement |
prepareNextValProcedureStatement(Connection con,
String procedureName,
String sequenceName)
Method prepareNextValProcedureStatement implementation is simply copied over from PlatformMsSQLServerImpl class. |
void |
registerOutResultSet(CallableStatement stmt,
int position)
Registers call argument at position as returning
a ResultSet value. |
void |
setObjectForStatement(PreparedStatement ps,
int index,
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.PlatformDefaultImpl |
|---|
addBatch, addPagingSql, afterStatementClose, beforeBatch, beforeStatementClose, bindPagingParameters, bindPagingParametersFirst, changeAutoCommitState, checkForBatchSupport, concatenate, executeBatch, getConcatenationCharacter, getEscapeClause, getLastInsertIdentityQuery, initializeJdbcConnection, setNullForStatement, supportsBatchOperations, supportsMultiColumnCountDistinct, supportsPaging, useCountForResultsetSize |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static final String THIN_URL_PREFIX
protected static final int THIN_BLOB_MAX_SIZE
protected static final int THIN_CLOB_MAX_SIZE
protected static int ORACLE_JDBC_TYPE_CURSOR
oracle.jdbc.OracleTypes.CURSOR.
initOracleReflectedVars()| Constructor Detail |
|---|
public PlatformOracleImpl()
| Method Detail |
|---|
public CallableStatement prepareNextValProcedureStatement(Connection con,
String procedureName,
String sequenceName)
throws PlatformException
prepareNextValProcedureStatement in interface PlatformprepareNextValProcedureStatement in class PlatformDefaultImplPlatformExceptionPlatform.prepareNextValProcedureStatement(java.sql.Connection, java.lang.String, java.lang.String)
public void afterStatementCreate(Statement stmt)
throws PlatformException
afterStatementCreate in interface PlatformafterStatementCreate in class PlatformDefaultImplPlatformException
public void setObjectForStatement(PreparedStatement ps,
int index,
Object value,
int sqlType)
throws SQLException
setObjectForStatement in interface PlatformsetObjectForStatement in class PlatformDefaultImplSQLExceptionPlatform.setObjectForStatement(java.sql.PreparedStatement, int, java.lang.Object, int)protected void changePreparedStatementResultSetType(PreparedStatement ps)
public byte getJoinSyntaxType()
getJoinSyntaxType in interface PlatformgetJoinSyntaxType in class PlatformDefaultImplPlatform.getJoinSyntaxType()public String createSequenceQuery(String sequenceName)
PlatformDefaultImpl
createSequenceQuery in interface PlatformcreateSequenceQuery in class PlatformDefaultImplsequenceName - The name of the sequence to create.
public String createSequenceQuery(String sequenceName,
Properties prop)
Platform
createSequenceQuery in interface PlatformcreateSequenceQuery in class PlatformDefaultImplsequenceName - The name of the sequence to create.prop - The database specific sequence properties.
public String nextSequenceQuery(String sequenceName)
PlatformDefaultImpl
nextSequenceQuery in interface PlatformnextSequenceQuery in class PlatformDefaultImplpublic String dropSequenceQuery(String sequenceName)
PlatformDefaultImpl
dropSequenceQuery in interface PlatformdropSequenceQuery in class PlatformDefaultImpl
public void registerOutResultSet(CallableStatement stmt,
int position)
throws SQLException
Platformposition as returning
a ResultSet value.
registerOutResultSet in interface PlatformregisterOutResultSet in class PlatformDefaultImplstmt - the statementposition - argument position
SQLExceptionPlatform.registerOutResultSet(java.sql.CallableStatement, int)protected static boolean isUsingOracleThinDriver(Connection conn)
conn - database connection for which to check JDBC-driver
true if the connection is using Oracle thin driver, false
otherwise.protected void initOracleReflectedVars()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||