public class JdbcAdapter extends Object implements DbAdapter
Modifier and Type | Field and Description |
---|---|
protected BatchQueryBuilderFactory |
batchQueryBuilderFactory |
protected boolean |
caseInsensitiveCollations |
static String |
CI_PROPERTY |
protected EJBQLTranslatorFactory |
ejbqlTranslatorFactory |
protected ExtendedTypeMap |
extendedTypes |
protected String |
identifiersEndQuote |
protected String |
identifiersStartQuote |
protected JdbcEventLogger |
logger |
protected ResourceLocator |
resourceLocator |
protected boolean |
supportsBatchUpdates |
protected boolean |
supportsGeneratedKeys |
protected boolean |
supportsUniqueConstraints |
protected TypesHandler |
typesHandler |
Constructor and Description |
---|
JdbcAdapter(RuntimeProperties runtimeProperties,
List<ExtendedType> defaultExtendedTypes,
List<ExtendedType> userExtendedTypes,
List<ExtendedTypeFactory> extendedTypeFactories)
Creates new JdbcAdapter with a set of default parameters.
|
Modifier and Type | Method and Description |
---|---|
void |
bindParameter(PreparedStatement statement,
Object object,
int pos,
int sqlType,
int scale)
Binds an object value to PreparedStatement's numbered parameter.
|
DbAttribute |
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 void |
configureExtendedTypes(ExtendedTypeMap map)
Called from
initExtendedTypes(List, List, List) to load adapter-specific
types into the ExtendedTypeMap right after the default types are loaded, but before
the DI overrides are. |
protected EJBQLTranslatorFactory |
createEJBQLTranslatorFactory()
Creates and returns an
EJBQLTranslatorFactory used to generate visitors for
EJBQL to SQL translations. |
String |
createFkConstraint(DbRelationship rel)
Returns a SQL string that can be used to create a foreign key constraint for the
relationship.
|
protected PkGenerator |
createPkGenerator()
Creates and returns a primary key generator.
|
String |
createTable(DbEntity entity)
Returns a SQL string that can be used to create database table corresponding to
ent parameter. |
void |
createTableAppendColumn(StringBuffer sqlBuffer,
DbAttribute column)
Appends SQL for column creation to CREATE TABLE buffer.
|
protected void |
createTableAppendPKClause(StringBuffer sqlBuffer,
DbEntity entity) |
String |
createUniqueConstraint(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 JDBC
type . |
protected URL |
findResource(String name)
Locates and returns a named adapter resource.
|
SQLAction |
getAction(Query query,
DataNode node)
Uses JdbcActionBuilder to create the right action.
|
BatchQueryBuilderFactory |
getBatchQueryBuilderFactory() |
String |
getBatchTerminator()
Returns default separator - a semicolon.
|
EJBQLTranslatorFactory |
getEjbqlTranslatorFactory()
Returns a translator factory for EJBQL to SQL translation.
|
ExtendedTypeMap |
getExtendedTypes()
Returns a map of ExtendedTypes that is used to translate values between Java and
JDBC layer.
|
String |
getIdentifiersEndQuote() |
String |
getIdentifiersStartQuote() |
JdbcEventLogger |
getJdbcEventLogger() |
PkGenerator |
getPkGenerator()
Returns primary key generator associated with this DbAdapter.
|
QualifierTranslator |
getQualifierTranslator(QueryAssembler queryAssembler)
Creates and returns a default implementation of a qualifier translator.
|
QuotingStrategy |
getQuotingStrategy(boolean needQuotes) |
protected void |
initExtendedTypes(List<ExtendedType> defaultExtendedTypes,
List<ExtendedType> userExtendedTypes,
List<ExtendedTypeFactory> extendedTypeFactories) |
protected void |
initIdentifiersQuotes() |
MergerFactory |
mergerFactory() |
void |
setBatchQueryBuilderFactory(BatchQueryBuilderFactory batchQueryBuilderFactory) |
void |
setEjbqlTranslatorFactory(EJBQLTranslatorFactory ejbqlTranslatorFactory)
Sets a translator factory for EJBQL to SQL translation.
|
void |
setPkGenerator(PkGenerator pkGenerator)
Sets new primary key generator.
|
void |
setSupportsBatchUpdates(boolean flag) |
void |
setSupportsGeneratedKeys(boolean flag) |
void |
setSupportsUniqueConstraints(boolean flag) |
boolean |
supportsBatchUpdates()
Returns
true if the target database supports batch updates. |
boolean |
supportsGeneratedKeys()
Returns true if a target database supports key autogeneration.
|
boolean |
supportsUniqueConstraints()
Returns true.
|
String |
tableTypeForTable()
Returns the name of the table type (as returned by
DatabaseMetaData.getTableTypes ) for a simple user table. |
String |
tableTypeForView()
Returns the name of the table type (as returned by
DatabaseMetaData.getTableTypes ) for a view table. |
boolean |
typeSupportsLength(int type)
Returns true if supplied type can have a length attribute as a part of column
definition
|
public static final String CI_PROPERTY
protected TypesHandler typesHandler
protected ExtendedTypeMap extendedTypes
protected boolean supportsBatchUpdates
protected boolean supportsUniqueConstraints
protected boolean supportsGeneratedKeys
protected EJBQLTranslatorFactory ejbqlTranslatorFactory
protected String identifiersStartQuote
protected String identifiersEndQuote
protected ResourceLocator resourceLocator
protected boolean caseInsensitiveCollations
protected BatchQueryBuilderFactory batchQueryBuilderFactory
protected JdbcEventLogger logger
public JdbcAdapter(RuntimeProperties runtimeProperties, List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories)
public String getIdentifiersStartQuote()
public String getIdentifiersEndQuote()
public String getBatchTerminator()
getBatchTerminator
in interface DbAdapter
public JdbcEventLogger getJdbcEventLogger()
protected URL findResource(String name)
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.
protected void configureExtendedTypes(ExtendedTypeMap map)
initExtendedTypes(List, List, List)
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.protected void initExtendedTypes(List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories)
protected PkGenerator createPkGenerator()
protected EJBQLTranslatorFactory createEJBQLTranslatorFactory()
EJBQLTranslatorFactory
used to generate visitors for
EJBQL to SQL translations. This method should be overriden by subclasses that need
to customize EJBQL generation.public PkGenerator getPkGenerator()
getPkGenerator
in interface DbAdapter
public void setPkGenerator(PkGenerator pkGenerator)
public boolean supportsUniqueConstraints()
supportsUniqueConstraints
in interface DbAdapter
public void setSupportsUniqueConstraints(boolean flag)
public boolean typeSupportsLength(int type)
typeSupportsLength
in interface DbAdapter
public Collection<String> dropTableStatements(DbEntity table)
DbAdapter
dropTableStatements
in interface DbAdapter
public String createTable(DbEntity entity)
ent
parameter.createTable
in interface DbAdapter
protected void createTableAppendPKClause(StringBuffer sqlBuffer, DbEntity entity)
public void createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column)
createTableAppendColumn
in interface DbAdapter
sqlBuffer
- the StringBuffer
to append the column type tocolumn
- the DbAttribute
defining the column to append type forpublic String createUniqueConstraint(DbEntity source, Collection<DbAttribute> columns)
createUniqueConstraint
in interface DbAdapter
public String createFkConstraint(DbRelationship rel)
createFkConstraint
in interface DbAdapter
public String[] externalTypesForJdbcType(int type)
DbAdapter
type
. Valid
JDBC types are defined in java.sql.Types.externalTypesForJdbcType
in interface DbAdapter
public ExtendedTypeMap getExtendedTypes()
DbAdapter
getExtendedTypes
in interface DbAdapter
public DbAttribute buildAttribute(String name, String typeName, int type, int size, int scale, boolean allowNulls)
DbAdapter
buildAttribute
in interface DbAdapter
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 parameterpublic String tableTypeForTable()
DbAdapter
DatabaseMetaData.getTableTypes
) for a simple user table.tableTypeForTable
in interface DbAdapter
public String tableTypeForView()
DbAdapter
DatabaseMetaData.getTableTypes
) for a view table.tableTypeForView
in interface DbAdapter
public QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler)
getQualifierTranslator
in interface DbAdapter
public SQLAction getAction(Query query, DataNode node)
public void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int scale) throws SQLException, Exception
DbAdapter
bindParameter
in interface DbAdapter
SQLException
Exception
public boolean supportsBatchUpdates()
DbAdapter
true
if the target database supports batch updates.supportsBatchUpdates
in interface DbAdapter
public void setSupportsBatchUpdates(boolean flag)
public boolean supportsGeneratedKeys()
DbAdapter
supportsGeneratedKeys
in interface DbAdapter
public void setSupportsGeneratedKeys(boolean flag)
public EJBQLTranslatorFactory getEjbqlTranslatorFactory()
createEJBQLTranslatorFactory()
, and can be overridden by calling
setEjbqlTranslatorFactory(EJBQLTranslatorFactory)
.public void setEjbqlTranslatorFactory(EJBQLTranslatorFactory ejbqlTranslatorFactory)
createEJBQLTranslatorFactory()
, so
users would only override it if they need to customize EJBQL translation.public MergerFactory mergerFactory()
mergerFactory
in interface DbAdapter
protected void initIdentifiersQuotes()
public QuotingStrategy getQuotingStrategy(boolean needQuotes)
getQuotingStrategy
in interface DbAdapter
public BatchQueryBuilderFactory getBatchQueryBuilderFactory()
public void setBatchQueryBuilderFactory(BatchQueryBuilderFactory batchQueryBuilderFactory)
Copyright © 2001–2018 Apache Cayenne. All rights reserved.