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,OracleAdapter,PostgresAdapter,SQLiteAdapter,SybaseAdapter
A generic DbAdapter implementation. Can be used as a default adapter or as a
superclass of a concrete adapter implementation.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected EJBQLTranslatorFactoryprotected ExtendedTypeMapprotected JdbcEventLoggerprotected QuotingStrategyprotected ResourceLocatorprotected booleanprotected booleanprotected booleanprotected TypesHandler -
Constructor Summary
ConstructorsConstructorDescriptionJdbcAdapter(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 Summary
Modifier and TypeMethodDescriptionvoidbindParameter(PreparedStatement statement, ParameterBinding binding) Binds an object value to PreparedStatement's parameter.buildAttribute(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 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 EJBQLTranslatorFactoryCreates and returns anEJBQLTranslatorFactoryused 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 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.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.Uses JdbcActionBuilder to create the right action.Returns default separator - a semicolon.Returns a translator factory for EJBQL to SQL translation.Returns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.Returns primary key generator associated with this DbAdapter.Returns SQL identifier quoting strategy objectgetSelectTranslator(FluentSelect<?, ?> query, EntityResolver entityResolver) 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) 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 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.cayenne.dba.DbAdapter
supportsGeneratedKeysForBatchInserts
-
Field Details
-
quotingStrategy
-
typesHandler
-
extendedTypes
-
supportsBatchUpdates
protected boolean supportsBatchUpdates -
supportsUniqueConstraints
protected boolean supportsUniqueConstraints -
supportsGeneratedKeys
protected boolean supportsGeneratedKeys -
ejbqlTranslatorFactory
-
resourceLocator
-
caseInsensitiveCollations
protected boolean caseInsensitiveCollations -
logger
-
-
Constructor Details
-
JdbcAdapter
public 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
-
getBatchTerminator
Returns default separator - a semicolon.- Specified by:
getBatchTerminatorin interfaceDbAdapter- Since:
- 1.0.4
-
getJdbcEventLogger
- Since:
- 3.1
-
findResource
Locates 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
-
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
-
createEJBQLTranslatorFactory
Creates 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
-
getPkGenerator
Returns primary key generator associated with this DbAdapter.- Specified by:
getPkGeneratorin interfaceDbAdapter
-
setPkGenerator
Sets new primary key generator.- Specified by:
setPkGeneratorin interfaceDbAdapter- Parameters:
pkGenerator- to set- Since:
- 1.1
-
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
-
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
-
getType
-
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
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
-
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 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 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 typesize- 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
Uses JdbcActionBuilder to create the right action. -
getSelectTranslator
- Specified by:
getSelectTranslatorin 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
-
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
-
getEjbqlTranslatorFactory
Returns 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 interfaceDbAdapter- Since:
- 3.0
-
getSystemCatalogs
- Specified by:
getSystemCatalogsin interfaceDbAdapter- Returns:
- list of system catalogs
-
getSystemSchemas
- Specified by:
getSystemSchemasin interfaceDbAdapter- Returns:
- list of system schemas
-
setEjbqlTranslatorFactory
Sets 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
-
getQuotingStrategy
Description copied from interface:DbAdapterReturns SQL identifier quoting strategy object- Specified by:
getQuotingStrategyin interfaceDbAdapter- Since:
- 4.0
-
unwrap
Simply returns this, as JdbcAdapter is not a wrapper.
-