Class JdbcAdapter
java.lang.Object
org.apache.cayenne.dba.JdbcAdapter
- All Implemented Interfaces:
DbAdapter
- Direct Known Subclasses:
DB2Adapter, DerbyAdapter, FirebirdAdapter, FrontBaseAdapter, H2Adapter, HSQLDBAdapter, IngresAdapter, MySQLAdapter, OracleAdapter, PostgresAdapter, SQLiteAdapter, SQLServerAdapter, SybaseAdapter
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected intprotected EJBQLTranslatorprotected ExtendedTypeMapprotected SQLLoggerDeprecated, for removal: This API element is subject to removal in a future version.protected Map<Integer, NativeColumnType[]> protected QuotingStrategyprotected booleanprotected booleanprotected boolean -
Constructor Summary
ConstructorsConstructorDescriptionJdbcAdapter(RuntimeProperties runtimeProperties, List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ValueObjectTypeRegistry valueObjectTypeRegistry) Creates new JdbcAdapter with a set of default parameters. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidbind(PreparedStatement statement, Object value, int psPosition, int psType, int psScale, ExtendedType binder) Binds a raw value to a statement parameter.voidbindParameter(CallableStatement statement, CSParameter<?> parameter) Binds an object value to CallableStatement's parameter.voidbindParameter(PreparedStatement statement, PSParameter<?> parameter) Binds an object value to PreparedStatement's parameter.buildAttribute(String name, String typeName, int type, int maxLength, int scale, boolean allowNulls) Creates and returns a DbAttribute based on supplied parameters (usually obtained from database metadata).protected voidCalled frominitExtendedTypes(List, List, List, ValueObjectTypeRegistry)to load adapter-specific types into the ExtendedTypeMap right after the default types are loaded, but before the DI overrides are.protected EJBQLTranslatorCreates and returns anEJBQLTranslatorused to generate visitors for EJBQL to SQL translations.Returns a SQL string that can be used to create a foreign key constraint for the relationship.protected NativeColumnType[]Returns the database-native types supported by this adapter.Returns a generic PK generator based on the "AUTO_PK_SUPPORT" lookup table.protected QuotingStrategycreateTable(DbEntity entity) Returns a SQL string that can be used to create database table corresponding toentparameter.voidcreateTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column) Appends SQL for column creation to CREATE TABLE buffer.protected voidcreateTableAppendPKClause(StringBuffer sqlBuffer, DbEntity entity) createUniqueConstraint(DbEntity source, Collection<DbAttribute> columns) Returns a DDL string to create a unique constraint over a set of columns.intReturns the length to use for an unconstrained character column (a CHAR/VARCHAR-family column with no max length) when this database requires a length.dropTableStatements(DbEntity table) Returns a collection of SQL statements needed to drop a database table.String[]externalTypesForJdbcType(int type) Deprecated, for removal: This API element is subject to removal in a future version.Uses JdbcActionBuilder to create the right action.Returns default separator - a semicolon.Returns theEJBQLTranslatorfor EJBQL to SQL translation.Returns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.getProcedureTranslator(ProcedureQuery query, EntityResolver entityResolver) Returns theProcedureTranslatorfor the given query.Returns the SQL identifier quoting style (start/end quote characters) for this adapter.getQuotingStrategy(DbEntity entity) Resolves theQuotingStrategyto use for the given entity: this adapter's strategy when the entity's DataMap enables SQL identifier quoting, andQuotingStrategy.NONEotherwise.getSelectTranslator(Select<?> query, EntityResolver entityResolver) Returns theSelectTranslatorfor the given query.Deprecated, for removal: This API element is subject to removal in a future version.logger should be taken from the DataNodestatic StringgetType(DbAdapter adapter, DbAttribute column) Deprecated, for removal: This API element is subject to removal in a future version.in favor ofDbAdapter.preferredNativeColumnType(DbAttribute)protected voidinitExtendedTypes(List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ValueObjectTypeRegistry valueObjectTypeRegistry) nativeColumnTypes(int type) Returns the database-native types that the given JDBCtype(seeTypes) maps to, or null if the type is not supported.voidsetEjbqlTranslator(EJBQLTranslator ejbqlTranslator) Sets theEJBQLTranslatorfor EJBQL to SQL translation.voidsetEjbqlTranslatorFactory(EJBQLTranslator ejbqlTranslator) Deprecated, for removal: This API element is subject to removal in a future version.in favor ofsetEjbqlTranslator(EJBQLTranslator).voidsetSupportsBatchUpdates(boolean flag) voidsetSupportsGeneratedKeys(boolean flag) voidsetSupportsUniqueConstraints(boolean flag) static StringsizeAndPrecision(DbAdapter adapter, DbAttribute column) Deprecated, for removal: This API element is subject to removal in a future version.in favor ofsizeAndScale(DbAdapter, DbAttribute)static StringsizeAndScale(DbAdapter adapter, DbAttribute column) booleanReturnstrueif the target database supports batch updates.booleanReturns true.booleanReturns true if a target database supports key autogeneration.booleanReturns true.Returns the name of the table type (as returned byDatabaseMetaData.getTableTypes) for a simple user table.Returns the name of the table type (as returned byDatabaseMetaData.getTableTypes) for a view table.booleantypeSupportsLength(int type) Returns true if supplied type can have a length attribute as a part of column definitionbooleantypeSupportsScale(int type) Returns true if supplied type can have a scale attribute as a part of column definition.unwrap()Simply returns this, as JdbcAdapter is not a wrapper.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface DbAdapter
getEjbqlTranslatorFactory, preferredBindingType, preferredNativeColumnType, supportsGeneratedKeysForBatchInserts
-
Field Details
-
quotingStrategy
-
defaultCharColumnLength
protected int defaultCharColumnLength -
nativeColumnTypes
-
extendedTypes
-
supportsBatchUpdates
protected boolean supportsBatchUpdates -
supportsUniqueConstraints
protected boolean supportsUniqueConstraints -
supportsGeneratedKeys
protected boolean supportsGeneratedKeys -
ejbqlTranslator
-
caseInsensitiveCollations
protected boolean caseInsensitiveCollations -
logger
Deprecated, for removal: This API element is subject to removal in a future version.
-
-
Constructor Details
-
JdbcAdapter
public JdbcAdapter(RuntimeProperties runtimeProperties, List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ValueObjectTypeRegistry valueObjectTypeRegistry) Creates new JdbcAdapter with a set of default parameters.
-
-
Method Details
-
getBatchTerminator
Returns default separator - a semicolon.- Specified by:
getBatchTerminatorin interfaceDbAdapter- Since:
- 1.0.4
-
getSQLLogger
Deprecated, for removal: This API element is subject to removal in a future version.logger should be taken from the DataNode- Since:
- 3.1
-
createNativeTypes
Returns the database-native types supported by this adapter.- Since:
- 5.0
-
configureExtendedTypes
Called frominitExtendedTypes(List, List, List, ValueObjectTypeRegistry)to load adapter-specific types into the ExtendedTypeMap right after the default types are loaded, but before the DI overrides are. This method has specific implementations in JdbcAdapter subclasses. -
initExtendedTypes
protected void initExtendedTypes(List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ValueObjectTypeRegistry valueObjectTypeRegistry) - Since:
- 3.1
-
createEJBQLTranslator
Creates and returns anEJBQLTranslatorused to generate visitors for EJBQL to SQL translations. This method should be overriden by subclasses that need to customize EJBQL generation.- Since:
- 3.0
-
createPkGenerator
Returns a generic PK generator based on the "AUTO_PK_SUPPORT" lookup table.- Specified by:
createPkGeneratorin interfaceDbAdapter
-
supportsUniqueConstraints
public boolean supportsUniqueConstraints()Returns true.- Specified by:
supportsUniqueConstraintsin interfaceDbAdapter- Since:
- 1.1
-
supportsCatalogsOnReverseEngineering
public boolean supportsCatalogsOnReverseEngineering()Returns true.- Specified by:
supportsCatalogsOnReverseEngineeringin interfaceDbAdapter- Since:
- 4.0
-
setSupportsUniqueConstraints
public void setSupportsUniqueConstraints(boolean flag) - Since:
- 1.1
-
typeSupportsLength
public boolean typeSupportsLength(int type) Returns true if supplied type can have a length attribute as a part of column definition- Specified by:
typeSupportsLengthin interfaceDbAdapter- Since:
- 4.0
-
typeSupportsScale
public boolean typeSupportsScale(int type) Returns true if supplied type can have a scale attribute as a part of column definition.- Specified by:
typeSupportsScalein interfaceDbAdapter- Parameters:
type- sql type code- Returns:
trueif a given type supports scale- Since:
- 5.0
-
defaultCharColumnLength
public int defaultCharColumnLength()Description copied from interface:DbAdapterReturns the length to use for an unconstrained character column (a CHAR/VARCHAR-family column with no max length) when this database requires a length.- Specified by:
defaultCharColumnLengthin interfaceDbAdapter- Since:
- 5.0
-
dropTableStatements
Description copied from interface:DbAdapterReturns a collection of SQL statements needed to drop a database table.- Specified by:
dropTableStatementsin interfaceDbAdapter- Since:
- 3.0
-
createTable
Returns a SQL string that can be used to create database table corresponding toentparameter.- Specified by:
createTablein interfaceDbAdapter
-
createTableAppendPKClause
- Since:
- 1.2
-
createTableAppendColumn
Appends SQL for column creation to CREATE TABLE buffer.- Specified by:
createTableAppendColumnin interfaceDbAdapter- Parameters:
sqlBuffer- theStringBufferto append the column type tocolumn- theDbAttributedefining the column to append type for- Since:
- 1.2
-
sizeAndPrecision
@Deprecated(since="5.0", forRemoval=true) public static String sizeAndPrecision(DbAdapter adapter, DbAttribute column) Deprecated, for removal: This API element is subject to removal in a future version.in favor ofsizeAndScale(DbAdapter, DbAttribute) -
sizeAndScale
-
getType
@Deprecated(since="5.0", forRemoval=true) public static String getType(DbAdapter adapter, DbAttribute column) Deprecated, for removal: This API element is subject to removal in a future version.in favor ofDbAdapter.preferredNativeColumnType(DbAttribute) -
createUniqueConstraint
Returns a DDL string to create a unique constraint over a set of columns.- Specified by:
createUniqueConstraintin interfaceDbAdapter- Since:
- 1.1
-
createFkConstraint
Returns a SQL string that can be used to create a foreign key constraint for the relationship.- Specified by:
createFkConstraintin interfaceDbAdapter
-
externalTypesForJdbcType
Deprecated, for removal: This API element is subject to removal in a future version.Description copied from interface:DbAdapterReturns an array of RDBMS types that can be used with JDBCtype. Valid JDBC types are defined in java.sql.Types.- Specified by:
externalTypesForJdbcTypein interfaceDbAdapter
-
nativeColumnTypes
Description copied from interface:DbAdapterReturns the database-native types that the given JDBCtype(seeTypes) maps to, or null if the type is not supported. The first variant is used for column DDL.- Specified by:
nativeColumnTypesin interfaceDbAdapter- Since:
- 5.0
-
getExtendedTypes
Description copied from interface:DbAdapterReturns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.- Specified by:
getExtendedTypesin interfaceDbAdapter
-
buildAttribute
public DbAttribute buildAttribute(String name, String typeName, int type, int maxLength, int scale, boolean allowNulls) Description copied from interface:DbAdapterCreates and returns a DbAttribute based on supplied parameters (usually obtained from database metadata).- Specified by:
buildAttributein interfaceDbAdapter- Parameters:
name- database column nametypeName- database specific type name, may be used as a hint to determine the right JDBC type.type- JDBC column typemaxLength- database column size (ignored if less than zero)scale- database column scale, i.e. the number of decimal digits (ignored if less than zero)allowNulls- database column nullable parameter
-
tableTypeForTable
Description copied from interface:DbAdapterReturns the name of the table type (as returned byDatabaseMetaData.getTableTypes) for a simple user table.- Specified by:
tableTypeForTablein interfaceDbAdapter
-
tableTypeForView
Description copied from interface:DbAdapterReturns the name of the table type (as returned byDatabaseMetaData.getTableTypes) for a view table.- Specified by:
tableTypeForViewin interfaceDbAdapter
-
getAction
-
getSelectTranslator
Description copied from interface:DbAdapterReturns theSelectTranslatorfor the given query. The default implementation ignores the query, but the parameter is retained so adapters can pick a translator based on it.- Specified by:
getSelectTranslatorin interfaceDbAdapter
-
getProcedureTranslator
public ProcedureTranslator getProcedureTranslator(ProcedureQuery query, EntityResolver entityResolver) Description copied from interface:DbAdapterReturns theProcedureTranslatorfor the given query. The default implementation ignores the query, but the parameter is retained so adapters can pick a translator based on it.- Specified by:
getProcedureTranslatorin interfaceDbAdapter
-
getSqlTreeProcessor
- Specified by:
getSqlTreeProcessorin interfaceDbAdapter- Returns:
SQLTreeProcessorthat can adjust SQL tree to specific database flavour
-
bindParameter
Description copied from interface:DbAdapterBinds an object value to PreparedStatement's parameter.- Specified by:
bindParameterin interfaceDbAdapter- Throws:
Exception
-
bindParameter
Description copied from interface:DbAdapterBinds an object value to CallableStatement's parameter.- Specified by:
bindParameterin interfaceDbAdapter- Throws:
Exception
-
bind
protected void bind(PreparedStatement statement, Object value, int psPosition, int psType, int psScale, ExtendedType binder) throws Exception Binds a raw value to a statement parameter. This is the single extension point shared by bothbindParameteroverloads; adapters that need database-specific handling (e.g. of NULLs) should override this method rather than the public overloads.- Throws:
Exception- Since:
- 5.0
-
supportsBatchUpdates
public boolean supportsBatchUpdates()Description copied from interface:DbAdapterReturnstrueif the target database supports batch updates.- Specified by:
supportsBatchUpdatesin interfaceDbAdapter
-
setSupportsBatchUpdates
public void setSupportsBatchUpdates(boolean flag) -
supportsGeneratedKeys
public boolean supportsGeneratedKeys()Description copied from interface:DbAdapterReturns true if a target database supports key autogeneration. This feature also requires JDBC3-compliant driver.- Specified by:
supportsGeneratedKeysin interfaceDbAdapter- Since:
- 1.2
-
setSupportsGeneratedKeys
public void setSupportsGeneratedKeys(boolean flag) - Since:
- 1.2
-
getEjbqlTranslator
Returns theEJBQLTranslatorfor EJBQL to SQL translation. It is normally initialized in the constructor by callingcreateEJBQLTranslator(), and can be changed later by callingsetEjbqlTranslator(EJBQLTranslator).- Specified by:
getEjbqlTranslatorin interfaceDbAdapter- Since:
- 5.0
-
getSystemCatalogs
- Specified by:
getSystemCatalogsin interfaceDbAdapter- Returns:
- list of system catalogs
-
getSystemSchemas
- Specified by:
getSystemSchemasin interfaceDbAdapter- Returns:
- list of system schemas
-
setEjbqlTranslator
Sets theEJBQLTranslatorfor EJBQL to SQL translation. This property is normally initialized in the constructor by callingcreateEJBQLTranslator(), so users would only override it if they need to customize EJBQL translation.- Since:
- 5.0
-
setEjbqlTranslatorFactory
@Deprecated(since="5.0", forRemoval=true) public void setEjbqlTranslatorFactory(EJBQLTranslator ejbqlTranslator) Deprecated, for removal: This API element is subject to removal in a future version.in favor ofsetEjbqlTranslator(EJBQLTranslator). -
createQuotingStrategy
-
getQuotingStrategy
Description copied from interface:DbAdapterReturns the SQL identifier quoting style (start/end quote characters) for this adapter. Whether quoting is applied is decided by the caller, which uses this instance when quoting is enabled andQuotingStrategy.NONEotherwise.- Specified by:
getQuotingStrategyin interfaceDbAdapter
-
getQuotingStrategy
Description copied from interface:DbAdapterResolves theQuotingStrategyto use for the given entity: this adapter's strategy when the entity's DataMap enables SQL identifier quoting, andQuotingStrategy.NONEotherwise.- Specified by:
getQuotingStrategyin interfaceDbAdapter
-
unwrap
-
nativeColumnTypes(int)