Package org.apache.cayenne.dba
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,- OpenBaseAdapter,- OracleAdapter,- PostgresAdapter,- SQLiteAdapter,- SybaseAdapter
public class JdbcAdapter extends Object implements DbAdapter
A generic DbAdapter implementation. Can be used as a default adapter or as a
 superclass of a concrete adapter implementation.
- 
Field SummaryFields Modifier and Type Field Description protected BatchTranslatorFactorybatchQueryBuilderFactoryDeprecated.since 4.0 BatchQueryBuilderfactory is attached to the DataNode.protected booleancaseInsensitiveCollationsprotected EJBQLTranslatorFactoryejbqlTranslatorFactoryprotected ExtendedTypeMapextendedTypesprotected JdbcEventLoggerloggerprotected QuotingStrategyquotingStrategyprotected ResourceLocatorresourceLocatorprotected booleansupportsBatchUpdatesprotected booleansupportsGeneratedKeysprotected booleansupportsUniqueConstraintsprotected TypesHandlertypesHandler
- 
Constructor SummaryConstructors Constructor Description JdbcAdapter(RuntimeProperties runtimeProperties, List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ResourceLocator resourceLocator, ValueObjectTypeRegistry valueObjectTypeRegistry)Creates new JdbcAdapter with a set of default parameters.
- 
Method SummaryModifier and Type Method Description voidbindParameter(PreparedStatement statement, ParameterBinding binding)Binds an object value to PreparedStatement's parameter.DbAttributebuildAttribute(String name, String typeName, int type, int size, int scale, boolean allowNulls)Creates and returns a DbAttribute based on supplied parameters (usually obtained from database meta data).protected voidconfigureExtendedTypes(ExtendedTypeMap map)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.protected EJBQLTranslatorFactorycreateEJBQLTranslatorFactory()Creates and returns anEJBQLTranslatorFactoryused to generate visitors for EJBQL to SQL translations.StringcreateFkConstraint(DbRelationship rel)Returns a SQL string that can be used to create a foreign key constraint for the relationship.protected PkGeneratorcreatePkGenerator()Deprecated.protected QuotingStrategycreateQuotingStrategy()StringcreateTable(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)StringcreateUniqueConstraint(DbEntity source, Collection<DbAttribute> columns)Returns a DDL string to create a unique constraint over a set of columns.Collection<String>dropTableStatements(DbEntity table)Returns a collection of SQL statements needed to drop a database table.String[]externalTypesForJdbcType(int type)Returns an array of RDBMS types that can be used with JDBCtype.protected URLfindResource(String name)Locates and returns a named adapter resource.SQLActiongetAction(Query query, DataNode node)Uses JdbcActionBuilder to create the right action.StringgetBatchTerminator()Returns default separator - a semicolon.EJBQLTranslatorFactorygetEjbqlTranslatorFactory()Returns a translator factory for EJBQL to SQL translation.ExtendedTypeMapgetExtendedTypes()Returns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.JdbcEventLoggergetJdbcEventLogger()PkGeneratorgetPkGenerator()Returns primary key generator associated with this DbAdapter.QualifierTranslatorgetQualifierTranslator(QueryAssembler queryAssembler)Creates and returns a default implementation of a qualifier translator.QuotingStrategygetQuotingStrategy()Returns SQL identifier quoting strategy objectSelectTranslatorgetSelectTranslator(SelectQuery<?> query, EntityResolver entityResolver)Returns a SelectTranslator that works with the adapter target database.List<String>getSystemCatalogs()List<String>getSystemSchemas()static StringgetType(DbAdapter adapter, DbAttribute column)protected voidinitExtendedTypes(List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ValueObjectTypeRegistry valueObjectTypeRegistry)voidsetEjbqlTranslatorFactory(EJBQLTranslatorFactory ejbqlTranslatorFactory)Sets a translator factory for EJBQL to SQL translation.voidsetPkGenerator(PkGenerator pkGenerator)Sets new primary key generator.voidsetSupportsBatchUpdates(boolean flag)voidsetSupportsGeneratedKeys(boolean flag)voidsetSupportsUniqueConstraints(boolean flag)static StringsizeAndPrecision(DbAdapter adapter, DbAttribute column)booleansupportsBatchUpdates()Returnstrueif the target database supports batch updates.booleansupportsCatalogsOnReverseEngineering()Returns true.booleansupportsGeneratedKeys()Returns true if a target database supports key autogeneration.booleansupportsUniqueConstraints()Returns true.StringtableTypeForTable()Returns the name of the table type (as returned byDatabaseMetaData.getTableTypes) for a simple user table.StringtableTypeForView()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 definitionDbAdapterunwrap()Simply returns this, as JdbcAdapter is not a wrapper.
- 
Field Details- 
quotingStrategy
- 
typesHandler
- 
extendedTypes
- 
supportsBatchUpdatesprotected boolean supportsBatchUpdates
- 
supportsUniqueConstraintsprotected boolean supportsUniqueConstraints
- 
supportsGeneratedKeysprotected boolean supportsGeneratedKeys
- 
ejbqlTranslatorFactory
- 
resourceLocator
- 
caseInsensitiveCollationsprotected boolean caseInsensitiveCollations
- 
batchQueryBuilderFactoryDeprecated.since 4.0 BatchQueryBuilderfactory is attached to the DataNode.- Since:
- 3.1
 
- 
logger
 
- 
- 
Constructor Details- 
JdbcAdapterpublic JdbcAdapter(RuntimeProperties runtimeProperties, List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ResourceLocator resourceLocator, ValueObjectTypeRegistry valueObjectTypeRegistry)Creates new JdbcAdapter with a set of default parameters.
 
- 
- 
Method Details- 
getBatchTerminatorReturns default separator - a semicolon.- Specified by:
- getBatchTerminatorin interface- DbAdapter
- Since:
- 1.0.4
 
- 
getJdbcEventLogger- Since:
- 3.1
 
- 
findResourceLocates and returns a named adapter resource. A resource can be an XML file, etc.This implementation is based on the premise that each adapter is located in its own Java package and all resources are in the same package as well. Resource lookup is recursive, so that if DbAdapter is a subclass of another adapter, parent adapter package is searched as a failover. - Since:
- 3.0
 
- 
configureExtendedTypesCalled 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.
- 
initExtendedTypesprotected void initExtendedTypes(List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ValueObjectTypeRegistry valueObjectTypeRegistry)- Since:
- 3.1
 
- 
createPkGeneratorDeprecated.Creates and returns a primary key generator. This factory method should be overriden by JdbcAdapter subclasses to provide custom implementations of PKGenerator.
- 
createEJBQLTranslatorFactoryCreates and returns anEJBQLTranslatorFactoryused to generate visitors for EJBQL to SQL translations. This method should be overriden by subclasses that need to customize EJBQL generation.- Since:
- 3.0
 
- 
getPkGeneratorReturns primary key generator associated with this DbAdapter.- Specified by:
- getPkGeneratorin interface- DbAdapter
 
- 
setPkGeneratorSets new primary key generator.- Specified by:
- setPkGeneratorin interface- DbAdapter
- Parameters:
- pkGenerator- to set
- Since:
- 1.1
 
- 
supportsUniqueConstraintspublic boolean supportsUniqueConstraints()Returns true.- Specified by:
- supportsUniqueConstraintsin interface- DbAdapter
- Since:
- 1.1
 
- 
supportsCatalogsOnReverseEngineeringpublic boolean supportsCatalogsOnReverseEngineering()Returns true.- Specified by:
- supportsCatalogsOnReverseEngineeringin interface- DbAdapter
- Since:
- 4.0
 
- 
setSupportsUniqueConstraintspublic void setSupportsUniqueConstraints(boolean flag)- Since:
- 1.1
 
- 
typeSupportsLengthpublic boolean typeSupportsLength(int type)Returns true if supplied type can have a length attribute as a part of column definition- Specified by:
- typeSupportsLengthin interface- DbAdapter
- Since:
- 4.0
 
- 
dropTableStatementsDescription copied from interface:DbAdapterReturns a collection of SQL statements needed to drop a database table.- Specified by:
- dropTableStatementsin interface- DbAdapter
- Since:
- 3.0
 
- 
createTableReturns a SQL string that can be used to create database table corresponding toentparameter.- Specified by:
- createTablein interface- DbAdapter
 
- 
createTableAppendPKClause- Since:
- 1.2
 
- 
createTableAppendColumnAppends SQL for column creation to CREATE TABLE buffer.- Specified by:
- createTableAppendColumnin interface- DbAdapter
- Parameters:
- sqlBuffer- the- StringBufferto append the column type to
- column- the- DbAttributedefining the column to append type for
- Since:
- 1.2
 
- 
sizeAndPrecision
- 
getType
- 
createUniqueConstraintReturns a DDL string to create a unique constraint over a set of columns.- Specified by:
- createUniqueConstraintin interface- DbAdapter
- Since:
- 1.1
 
- 
createFkConstraintReturns a SQL string that can be used to create a foreign key constraint for the relationship.- Specified by:
- createFkConstraintin interface- DbAdapter
 
- 
externalTypesForJdbcTypeDescription 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 interface- DbAdapter
 
- 
getExtendedTypesDescription copied from interface:DbAdapterReturns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.- Specified by:
- getExtendedTypesin interface- DbAdapter
 
- 
buildAttributepublic DbAttribute buildAttribute(String name, String typeName, int type, int size, int scale, boolean allowNulls)Description copied from interface:DbAdapterCreates and returns a DbAttribute based on supplied parameters (usually obtained from database meta data).- Specified by:
- buildAttributein interface- DbAdapter
- Parameters:
- name- database column name
- typeName- database specific type name, may be used as a hint to determine the right JDBC type.
- type- JDBC column type
- size- 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
 
- 
tableTypeForTableDescription copied from interface:DbAdapterReturns the name of the table type (as returned byDatabaseMetaData.getTableTypes) for a simple user table.- Specified by:
- tableTypeForTablein interface- DbAdapter
 
- 
tableTypeForViewDescription copied from interface:DbAdapterReturns the name of the table type (as returned byDatabaseMetaData.getTableTypes) for a view table.- Specified by:
- tableTypeForViewin interface- DbAdapter
 
- 
getQualifierTranslatorCreates and returns a default implementation of a qualifier translator.- Specified by:
- getQualifierTranslatorin interface- DbAdapter
 
- 
getActionUses JdbcActionBuilder to create the right action.
- 
getSelectTranslatorDescription copied from interface:DbAdapterReturns a SelectTranslator that works with the adapter target database.- Specified by:
- getSelectTranslatorin interface- DbAdapter
 
- 
bindParameterpublic void bindParameter(PreparedStatement statement, ParameterBinding binding) throws SQLException, ExceptionDescription copied from interface:DbAdapterBinds an object value to PreparedStatement's parameter.- Specified by:
- bindParameterin interface- DbAdapter
- Throws:
- SQLException
- Exception
 
- 
supportsBatchUpdatespublic boolean supportsBatchUpdates()Description copied from interface:DbAdapterReturnstrueif the target database supports batch updates.- Specified by:
- supportsBatchUpdatesin interface- DbAdapter
 
- 
setSupportsBatchUpdatespublic void setSupportsBatchUpdates(boolean flag)
- 
supportsGeneratedKeyspublic 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 interface- DbAdapter
- Since:
- 1.2
 
- 
setSupportsGeneratedKeyspublic void setSupportsGeneratedKeys(boolean flag)- Since:
- 1.2
 
- 
getEjbqlTranslatorFactoryReturns a translator factory for EJBQL to SQL translation. The factory is normally initialized in constructor by callingcreateEJBQLTranslatorFactory(), and can be changed later by callingsetEjbqlTranslatorFactory(EJBQLTranslatorFactory).- Specified by:
- getEjbqlTranslatorFactoryin interface- DbAdapter
- Since:
- 3.0
 
- 
getSystemCatalogs- Specified by:
- getSystemCatalogsin interface- DbAdapter
- Returns:
- list of system catalogs
 
- 
getSystemSchemas- Specified by:
- getSystemSchemasin interface- DbAdapter
- Returns:
- list of system schemas
 
- 
setEjbqlTranslatorFactorySets a translator factory for EJBQL to SQL translation. This property is normally initialized in constructor by callingcreateEJBQLTranslatorFactory(), so users would only override it if they need to customize EJBQL translation.- Since:
- 3.0
 
- 
createQuotingStrategy- Since:
- 4.0
 
- 
getQuotingStrategyDescription copied from interface:DbAdapterReturns SQL identifier quoting strategy object- Specified by:
- getQuotingStrategyin interface- DbAdapter
- Since:
- 4.0
 
- 
unwrapSimply returns this, as JdbcAdapter is not a wrapper.
 
-