EclipseLink 2.4.0, build 'v20120608-r11652' API Reference

org.eclipse.persistence.platform.database.oracle
Class Oracle8Platform

java.lang.Object
  extended by org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      extended by org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
          extended by org.eclipse.persistence.platform.database.DatabasePlatform
              extended by org.eclipse.persistence.platform.database.OraclePlatform
                  extended by org.eclipse.persistence.platform.database.oracle.Oracle8Platform
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, org.eclipse.persistence.internal.databaseaccess.Platform
Direct Known Subclasses:
Oracle9Platform

public class Oracle8Platform
extends OraclePlatform

Purpose: Supports certain new Oracle 8 data types, and usage of certain Oracle JDBC specific APIs.

Supports Oracle thin JDBC driver LOB >4k binding workaround.

Creates BLOB and CLOB type for byte[] and char[] for table creation.

Supports object-relational data-type creation.

See Also:
Serialized Form

Field Summary
protected  int lobValueLimits
          The LOB value limits when the Locator is required for the writing
protected  boolean usesLocatorForLOBWrite
          Locator is required for Oracle thin driver to write LOB value exceeds the limits
 
Fields inherited from class org.eclipse.persistence.platform.database.OraclePlatform
END_FROM, FROM, HINT, MAX_ROW, MIN_ROW, SELECT, supportsIdentity, vpdClearIdentifierQuery, vpdSetIdentifierQuery
 
Fields inherited from class org.eclipse.persistence.platform.database.DatabasePlatform
DEFAULT_VARCHAR_SIZE
 
Fields inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
castSizeForVarcharParameter, classTypes, cursorCode, DEFAULT_MAX_BATCH_WRITING_SIZE, DEFAULT_PARAMETERIZED_MAX_BATCH_WRITING_SIZE, fieldTypes, IS_VALID_TIMEOUT, isCastRequired, maxBatchWritingSize, partitioningCallback, pingSQL, printInnerJoinInWhereClause, printOuterJoinInWhereClause, shouldBindAllParameters, shouldBindLiterals, shouldCacheAllStatements, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldOptimizeDataConversion, shouldTrimStrings, statementCacheSize, stringBindingSize, structConverters, supportsAutoCommit, tableCreationSuffix, transactionIsolation, typeConverters, Types_NCLOB, Types_SQLXML, useRownumFiltering, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesStreamsForBinding, usesStringBinding
 
Fields inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
conversionManager, dataTypesConvertedFromAClass, dataTypesConvertedToAClass, defaultSequence, endDelimiter, platformOperators, sequences, sequencesLock, startDelimiter, tableQualifier, timestampQuery
 
Constructor Summary
Oracle8Platform()
           
 
Method Summary
protected  java.util.Hashtable buildFieldTypes()
          INTERNAL:
 void copyInto(org.eclipse.persistence.internal.databaseaccess.Platform platform)
          INTERNAL: Allow for conversion from the Oralce type to the Java type.
 java.sql.Array createArray(java.lang.String elementDataTypeName, java.lang.Object[] elements, java.sql.Connection connection)
          INTERNAL: Platforms that support java.sql.Array may override this method.
 java.sql.Struct createStruct(java.lang.String structTypeName, java.lang.Object[] attributes, java.sql.Connection connection)
          INTERNAL: Platforms that support java.sql.Struct may override this method.
 void freeTemporaryObject(java.lang.Object value)
          INTERNAL: Used by Oracle platforms during reading of ResultSet to free temporary LOBs.
 java.sql.Connection getConnection(org.eclipse.persistence.internal.sessions.AbstractSession session, java.sql.Connection connection)
          INTERNAL: This method is used to unwrap the oracle connection wrapped by the application server.
 java.lang.Object getCustomModifyValueForCall(Call call, java.lang.Object value, org.eclipse.persistence.internal.helper.DatabaseField field, boolean shouldBind)
          INTERNAL Used by SQLCall.translate(..)
 int getLobValueLimits()
          PUBLIC: Return the BLOB/CLOB value limits on thin driver.
 java.lang.Object getRefValue(java.sql.Ref ref, java.sql.Connection connection)
          INTERNAL: Overrides DatabasePlatform method.
protected  boolean isBlob(java.lang.Class type)
          INTERNAL: Used in writeLOB method only to identify a BLOB
protected  boolean isClob(java.lang.Class type)
          INTERNAL: Used in writeLOB method only to identify a CLOB
 boolean isNativeConnectionRequiredForLobLocator()
          INTERNAL: Indicates whether app. server should unwrap connection to use lob locator.
protected  boolean lobValueExceedsLimit(java.lang.Object value)
          INTERNAL: Return if the LOB value size is larger than the limit, i.e. 4k.
 void setLobValueLimits(int lobValueLimits)
          PUBLIC: Set the BLOB/CLOB value limits on thin driver.
 void setShouldUseLocatorForLOBWrite(boolean usesLocatorForLOBWrite)
          PUBLIC: Set if the locator is required for the LOB write.
 boolean shouldUseCustomModifyForCall(org.eclipse.persistence.internal.helper.DatabaseField field)
          INTERNAL Used by SQLCall.appendModify(..)
 boolean shouldUseLocatorForLOBWrite()
          PUBLIC: Return if the locator is required for the LOB write.
 void writeLOB(org.eclipse.persistence.internal.helper.DatabaseField field, java.lang.Object value, java.sql.ResultSet resultSet, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Write LOB value - only on Oracle8 and up
 
Methods inherited from class org.eclipse.persistence.platform.database.OraclePlatform
allowsSizeInProcedureArguments, appendByteArray, appendCalendar, appendDate, appendTime, appendTimestamp, atan2Operator, buildCallWithReturning, buildSelectQueryForIdentity, buildSelectQueryForSequenceObject, canBuildCallWithReturning, canUnwrapOracleConnection, clearOracleConnectionCache, currentDateOperator, currentTimeOperator, exceptOperator, getAssignmentString, getBatchBeginString, getBatchEndString, getDeclareBeginString, getMaxFieldNameSize, getNativeTableInfo, getObjectFromResultSet, getProcedureArgumentSetter, getProcedureCallHeader, getProcedureCallTail, getSelectForUpdateString, getSelectForUpdateWaitString, getStoredProcedureParameterPrefix, getStoredProcedureTerminationToken, getSystemChangeNumberQuery, getTimestampQuery, getVPDClearIdentifierQuery, getVPDCreationFunctionString, getVPDCreationPolicyString, getVPDDeletionString, getVPDSetIdentifierQuery, initializePlatformOperators, isAlterSequenceObjectSupported, isForUpdateCompatibleWithDistinct, isLockTimeoutException, isOracle, logOperator, maximumNumericValues, minimumNumericValues, operatorLocate, operatorLocate2, operatorOuterJoin, printFieldNullClause, printSQLSelectStatement, regexpOperator, serverTimestampString, setSupportsIdentity, shouldUseJDBCOuterJoinSyntax, supportsAutoConversionToNumericForArithmeticOperations, supportsIdentity, supportsSelectForUpdateNoWait, supportsSequenceObjects, supportsStoredFunctions, supportsVPD, todayOperator, unwrapOracleConnection, wasFailureCommunicationBased
 
Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
addBatch, addStructConverter, appendBoolean, appendLiteralToCall, appendLiteralToCallWithBinding, appendNumber, appendParameter, appendParameterInternal, appendString, autoCommit, beginTransaction, buildBatchCriteria, buildBatchCriteriaForComplexId, buildClassTypes, buildCreateIndex, buildCreateIndex, buildDropIndex, buildDropIndex, buildProcedureCallString, buildSequenceObjectAlterIncrementWriter, buildSequenceObjectCreationWriter, buildSequenceObjectDeletionWriter, canBatchWriteWithOptimisticLocking, commitTransaction, computeMaxRowsForSQL, convertToDatabaseType, createArray, createPlatformDefaultSequence, createStruct, dontBindUpdateAllQueryUsingTempTables, executeBatch, executeStoredProcedure, getBatchDelimiterString, getCastSizeForVarcharParameter, getClassTypes, getConstraintDeletionString, getCreateTempTableSqlBodyForTable, getCreateTempTableSqlPrefix, getCreateTempTableSqlSuffix, getCreateViewString, getCreationInOutputProcedureToken, getCreationOutputProcedureToken, getCursorCode, getDefaultSequenceTableName, getFieldTypeDefinition, getFieldTypes, getFunctionCallHeader, getIdentifierQuoteCharacter, getIndexNamePrefix, getInOutputProcedureToken, getInputProcedureToken, getJDBCOuterJoinString, getJDBCType, getJDBCType, getJdbcTypeName, getMaxBatchWritingSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getOutputProcedureToken, getPartitioningCallback, getPingSQL, getProcedureArgumentString, getProcedureAsString, getProcedureBeginString, getProcedureEndString, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getSelectForUpdateNoWaitString, getSelectForUpdateOfString, getSequenceCounterFieldName, getSequenceNameFieldName, getSequencePreallocationSize, getSequenceTableName, getStatementCacheSize, getStringBindingSize, getStructConverters, getTableCreationSuffix, getTempTableForTable, getTransactionIsolation, getTypeConverters, hasPartitioningCallback, initialize, initializeConnectionData, isCastRequired, isDynamicSQLRequiredForFunctions, isInformixOuterJoin, isNullAllowedInSelectClause, isXDBDocument, minimumTimeIncrement, prepareBatchStatement, printFieldIdentityClause, printFieldNotNullClause, printFieldTypeSize, printFieldTypeSize, printFieldUnique, printFieldUnique, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureBrackets, requiresProcedureCallBrackets, requiresProcedureCallOuputToken, requiresTableInIndexDropDDL, requiresTypeNameToRegisterOutputParameter, requiresUniqueConstraintCreationOnTableCreate, retrieveFirstPrimaryKeyOrOne, rollbackTransaction, setCastSizeForVarcharParameter, setClassTypes, setCursorCode, setFieldTypes, setIsCastRequired, setMaxBatchWritingSize, setNullFromDatabaseField, setParameterValueInDatabaseCall, setPartitioningCallback, setPingSQL, setPrintInnerJoinInWhereClause, setPrintOuterJoinInWhereClause, setSequenceCounterFieldName, setSequenceNameFieldName, setSequenceTableName, setShouldBindAllParameters, setShouldBindLiterals, setShouldCacheAllStatements, setShouldForceFieldNamesToUpperCase, setShouldIgnoreCaseOnFieldComparisons, setShouldOptimizeDataConversion, setShouldTrimStrings, setShouldUseRownumFiltering, setStatementCacheSize, setStringBindingSize, setSupportsAutoCommit, setTableCreationSuffix, setTransactionIsolation, setUsesBatchWriting, setUsesByteArrayBinding, setUsesJDBCBatchWriting, setUsesNativeBatchWriting, setUsesNativeSQL, setUsesStreamsForBinding, setUsesStringBinding, shouldAlwaysUseTempStorageForModifyAll, shouldBindAllParameters, shouldBindLiterals, shouldCacheAllStatements, shouldCreateIndicesForPrimaryKeys, shouldCreateIndicesOnUniqueKeys, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldIgnoreException, shouldOptimizeDataConversion, shouldPrintAliasForUpdate, shouldPrintConstraintNameAfter, shouldPrintFieldIdentityClause, shouldPrintInnerJoinInWhereClause, shouldPrintInOutputTokenBeforeType, shouldPrintInputTokenAtStart, shouldPrintLockingClauseAfterWhereClause, shouldPrintOuterJoinInWhereClause, shouldPrintOutputTokenAtStart, shouldPrintOutputTokenBeforeType, shouldPrintStoredProcedureArgumentNameInCall, shouldPrintStoredProcedureVariablesAfterBeginString, shouldTempTableSpecifyPrimaryKeys, shouldTrimStrings, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsCountDistinctWithMultipleFields, supportsDeleteOnCascade, supportsForeignKeyConstraints, supportsGlobalTempTables, supportsIndexes, supportsIndividualTableLocking, supportsLocalTempTables, supportsLockingQueriesWithMultipleTables, supportsNestingOuterJoins, supportsOuterJoinsWithBrackets, supportsPrimaryKeyConstraint, supportsTempTables, supportsUniqueColumns, supportsUniqueKeyConstraints, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesSequenceTable, usesStreamsForBinding, usesStringBinding, writeAutoAssignmentSetClause, writeAutoJoinWhereClause, writeCleanUpTempTableSql, writeCreateTempTableSql, writeDeleteFromTargetTableUsingTempTableSql, writeFields, writeFieldsAutoClause, writeFieldsList, writeInsertIntoTableSql, writeJoinWhereClause, writeParameterMarker, writeTableCreationSuffix, writeUpdateOriginalFromTempTableSql
 
Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
addOperator, addSequence, addSequence, buildNativeCall, buildSelectQueryForIdentity, buildSelectQueryForSequenceObject, clone, convertObject, createConnectionCustomizer, getConversionManager, getDataTypesConvertedFrom, getDataTypesConvertedTo, getDefaultSequence, getDefaultSequenceToWrite, getEndDelimiter, getOperator, getPlatformOperators, getSelectSequenceQuery, getSequence, getSequences, getSequencesToWrite, getStartDelimiter, getTableQualifier, getTimestampFromServer, getUpdateSequenceQuery, hasDefaultSequence, initializeDefaultQueries, isAccess, isAttunity, isCloudscape, isDB2, isDBase, isDerby, isFirebird, isH2, isHSQL, isInformix, isMaxDB, isMySQL, isODBC, isOracle9, isPointBase, isPostgreSQL, isSQLAnywhere, isSQLServer, isSybase, isSymfoware, isTimesTen, isTimesTen7, removeAllSequences, removeSequence, sequencesAfterCloneCleanup, setConversionManager, setDefaultSequence, setEndDelimiter, setSelectSequenceNumberQuery, setSequencePreallocationSize, setSequences, setStartDelimiter, setTableQualifier, setTimestampQuery, setUpdateSequenceQuery, shouldNativeSequenceUseTransaction, shouldPrepare, shouldSelectDistinctIncludeOrderBy, shouldSelectIncludeOrderBy, supportsNativeSequenceNumbers, toString, usesPlatformDefaultSequence
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

usesLocatorForLOBWrite

protected boolean usesLocatorForLOBWrite
Locator is required for Oracle thin driver to write LOB value exceeds the limits


lobValueLimits

protected int lobValueLimits
The LOB value limits when the Locator is required for the writing

Constructor Detail

Oracle8Platform

public Oracle8Platform()
Method Detail

buildFieldTypes

protected java.util.Hashtable buildFieldTypes()
INTERNAL:

Overrides:
buildFieldTypes in class OraclePlatform

copyInto

public void copyInto(org.eclipse.persistence.internal.databaseaccess.Platform platform)
INTERNAL: Allow for conversion from the Oralce type to the Java type.

Specified by:
copyInto in interface org.eclipse.persistence.internal.databaseaccess.Platform
Overrides:
copyInto in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

lobValueExceedsLimit

protected boolean lobValueExceedsLimit(java.lang.Object value)
INTERNAL: Return if the LOB value size is larger than the limit, i.e. 4k.


getConnection

public java.sql.Connection getConnection(org.eclipse.persistence.internal.sessions.AbstractSession session,
                                         java.sql.Connection connection)
INTERNAL: This method is used to unwrap the oracle connection wrapped by the application server. TopLink needs this unwrapped connection for certain Oracle Specific support. (ie TIMESTAMPTZ, LOB) This is added as a workaround for bug 4565190

Overrides:
getConnection in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getCustomModifyValueForCall

public java.lang.Object getCustomModifyValueForCall(Call call,
                                                    java.lang.Object value,
                                                    org.eclipse.persistence.internal.helper.DatabaseField field,
                                                    boolean shouldBind)
INTERNAL Used by SQLCall.translate(..) Typically there is no field translation (and this is default implementation). However on different platforms (Oracle) there are cases such that the values for binding and appending may be different (BLOB, CLOB). In these special cases the method returns a wrapper object which knows whether it should be bound or appended and knows how to do that.

Specified by:
getCustomModifyValueForCall in interface org.eclipse.persistence.internal.databaseaccess.Platform
Overrides:
getCustomModifyValueForCall in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

shouldUseCustomModifyForCall

public boolean shouldUseCustomModifyForCall(org.eclipse.persistence.internal.helper.DatabaseField field)
INTERNAL Used by SQLCall.appendModify(..) If the field should be passed to customModifyInDatabaseCall, retun true, otherwise false. Methods shouldCustomModifyInDatabaseCall and customModifyInDatabaseCall should be kept in sync: shouldCustomModifyInDatabaseCall should return true if and only if the field is handled by customModifyInDatabaseCall.

Specified by:
shouldUseCustomModifyForCall in interface org.eclipse.persistence.internal.databaseaccess.Platform
Overrides:
shouldUseCustomModifyForCall in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

writeLOB

public void writeLOB(org.eclipse.persistence.internal.helper.DatabaseField field,
                     java.lang.Object value,
                     java.sql.ResultSet resultSet,
                     org.eclipse.persistence.internal.sessions.AbstractSession session)
              throws java.sql.SQLException
INTERNAL: Write LOB value - only on Oracle8 and up

Overrides:
writeLOB in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Throws:
java.sql.SQLException

isBlob

protected boolean isBlob(java.lang.Class type)
INTERNAL: Used in writeLOB method only to identify a BLOB


isClob

protected boolean isClob(java.lang.Class type)
INTERNAL: Used in writeLOB method only to identify a CLOB


isNativeConnectionRequiredForLobLocator

public boolean isNativeConnectionRequiredForLobLocator()
INTERNAL: Indicates whether app. server should unwrap connection to use lob locator.

Overrides:
isNativeConnectionRequiredForLobLocator in class OraclePlatform

setShouldUseLocatorForLOBWrite

public void setShouldUseLocatorForLOBWrite(boolean usesLocatorForLOBWrite)
PUBLIC: Set if the locator is required for the LOB write. The default is true. For Oracle thin driver, the locator is recommended for large size ( >4k for Oracle8, >5.9K for Oracle9) BLOB/CLOB value write.


shouldUseLocatorForLOBWrite

public boolean shouldUseLocatorForLOBWrite()
PUBLIC: Return if the locator is required for the LOB write. The default is true. For Oracle thin driver, the locator is recommended for large size ( >4k for Oracle8, >5.9K for Oracle9) BLOB/CLOB value write.


getLobValueLimits

public int getLobValueLimits()
PUBLIC: Return the BLOB/CLOB value limits on thin driver. The default value is 0. If usesLocatorForLOBWrite is true, locator will be used in case the lob's size is larger than lobValueLimit.


setLobValueLimits

public void setLobValueLimits(int lobValueLimits)
PUBLIC: Set the BLOB/CLOB value limits on thin driver. The default value is 0. If usesLocatorForLOBWrite is true, locator will be used in case the lob's size is larger than lobValueLimit.


createArray

public java.sql.Array createArray(java.lang.String elementDataTypeName,
                                  java.lang.Object[] elements,
                                  java.sql.Connection connection)
                           throws java.sql.SQLException
INTERNAL: Platforms that support java.sql.Array may override this method.

Overrides:
createArray in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Returns:
Array
Throws:
java.sql.SQLException

createStruct

public java.sql.Struct createStruct(java.lang.String structTypeName,
                                    java.lang.Object[] attributes,
                                    java.sql.Connection connection)
                             throws java.sql.SQLException
INTERNAL: Platforms that support java.sql.Struct may override this method.

Overrides:
createStruct in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Returns:
Struct
Throws:
java.sql.SQLException

getRefValue

public java.lang.Object getRefValue(java.sql.Ref ref,
                                    java.sql.Connection connection)
                             throws java.sql.SQLException
INTERNAL: Overrides DatabasePlatform method.

Overrides:
getRefValue in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Returns:
String
Throws:
java.sql.SQLException

freeTemporaryObject

public void freeTemporaryObject(java.lang.Object value)
                         throws java.sql.SQLException
INTERNAL: Used by Oracle platforms during reading of ResultSet to free temporary LOBs.

Overrides:
freeTemporaryObject in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Throws:
java.sql.SQLException

EclipseLink 2.4.0, build 'v20120608-r11652' API Reference