org.apache.cayenne.dba
Interface DbAdapter

All Known Implementing Classes:
AutoAdapter, DB2Adapter, DerbyAdapter, FirebirdAdapter, FrontBaseAdapter, HSQLDBAdapter, HSQLDBNoSchemaAdapter, IngresAdapter, JdbcAdapter, MySQLAdapter, OpenBaseAdapter, Oracle8Adapter, OracleAdapter, PostgresAdapter, SQLServerAdapter, SybaseAdapter

public interface DbAdapter

Defines API needed to handle differences between various databases accessed via JDBC. Implementing classed are intended to be pluggable database-specific adapters. DbAdapter-based architecture is introduced to solve the following problems:

Author:
Andrei Adamchik

Method Summary
 void bindParameter(java.sql.PreparedStatement statement, java.lang.Object object, int pos, int sqlType, int precision)
          Binds an object value to PreparedStatement's numbered parameter.
 DbAttribute buildAttribute(java.lang.String name, java.lang.String typeName, int type, int size, int precision, boolean allowNulls)
          Creates and returns a DbAttribute based on supplied parameters (usually obtained from database meta data).
 DataNode createDataNode(java.lang.String name)
          Deprecated. since 1.2 this method is not used as node behavior customization is done via SQLActionVisitor.
 java.lang.String createFkConstraint(DbRelationship rel)
          Returns a SQL string that can be used to create a foreign key constraint for the relationship.
 java.lang.String createTable(DbEntity entity)
          Returns a SQL string that can be used to create database table corresponding to ent parameter.
 java.lang.String createUniqueConstraint(DbEntity source, java.util.Collection columns)
          Returns a DDL string to create a unique constraint over a set of columns.
 java.lang.String dropTable(DbEntity entity)
          Returns a SQL string that can be used to drop a database table corresponding to ent parameter.
 java.lang.String[] externalTypesForJdbcType(int type)
          Returns an array of RDBMS types that can be used with JDBC type.
 SQLAction getAction(Query query, DataNode node)
          Returns an instance of SQLAction that should handle the query.
 java.lang.String getBatchTerminator()
          Returns a String used to terminate a batch in command-line tools.
 ExtendedTypeMap getExtendedTypes()
          Returns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.
 PkGenerator getPkGenerator()
          Returns primary key generator associated with this DbAdapter.
 QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler)
           
 QueryTranslator getQueryTranslator(Query query)
          Deprecated. since 1.2 this method is unneeded as customizations are done via custom SQLActions.
 boolean shouldRunBatchQuery(DataNode node, java.sql.Connection con, BatchQuery query, OperationObserver delegate)
          Deprecated. Since 1.2 this method is obsolete and is ignored across Cayenne.
 boolean supportsBatchUpdates()
          Returns true if the target database supports batch updates.
 boolean supportsFkConstraints()
          Returns true if a target database supports FK constraints.
 boolean supportsGeneratedKeys()
          Returns true if a target database supports key autogeneration.
 boolean supportsUniqueConstraints()
          Returns true if a target database supports UNIQUE constraints.
 java.lang.String tableTypeForTable()
          Returns the name of the table type (as returned by DatabaseMetaData.getTableTypes) for a simple user table.
 java.lang.String tableTypeForView()
          Returns the name of the table type (as returned by DatabaseMetaData.getTableTypes) for a view table.
 

Method Detail

getBatchTerminator

java.lang.String getBatchTerminator()
Returns a String used to terminate a batch in command-line tools. E.g. ";" on Oracle or "go" on Sybase.

Since:
1.0.4

createDataNode

DataNode createDataNode(java.lang.String name)
Deprecated. since 1.2 this method is not used as node behavior customization is done via SQLActionVisitor.

Creates an returns a named instance of a DataNode.


getQueryTranslator

QueryTranslator getQueryTranslator(Query query)
                                   throws java.lang.Exception
Deprecated. since 1.2 this method is unneeded as customizations are done via custom SQLActions.

Creates and returns a QueryTranslator appropriate for the specified query parameter. Sets translator "query" and "adapter" property.

This factory method allows subclasses to specify their own translators that implement vendor-specific optimizations.

Throws:
java.lang.Exception

getQualifierTranslator

QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler)

getAction

SQLAction getAction(Query query,
                    DataNode node)
Returns an instance of SQLAction that should handle the query.

Since:
1.2

supportsFkConstraints

boolean supportsFkConstraints()
Returns true if a target database supports FK constraints.


supportsUniqueConstraints

boolean supportsUniqueConstraints()
Returns true if a target database supports UNIQUE constraints.

Since:
1.1

supportsGeneratedKeys

boolean supportsGeneratedKeys()
Returns true if a target database supports key autogeneration. This feature also requires JDBC3-compliant driver.

Since:
1.2

supportsBatchUpdates

boolean supportsBatchUpdates()
Returns true if the target database supports batch updates.


dropTable

java.lang.String dropTable(DbEntity entity)
Returns a SQL string that can be used to drop a database table corresponding to ent parameter.


createTable

java.lang.String createTable(DbEntity entity)
Returns a SQL string that can be used to create database table corresponding to ent parameter.


createUniqueConstraint

java.lang.String createUniqueConstraint(DbEntity source,
                                        java.util.Collection columns)
Returns a DDL string to create a unique constraint over a set of columns.

Since:
1.1

createFkConstraint

java.lang.String createFkConstraint(DbRelationship rel)
Returns a SQL string that can be used to create a foreign key constraint for the relationship.


externalTypesForJdbcType

java.lang.String[] externalTypesForJdbcType(int type)
Returns an array of RDBMS types that can be used with JDBC type. Valid JDBC types are defined in java.sql.Types.


getExtendedTypes

ExtendedTypeMap getExtendedTypes()
Returns a map of ExtendedTypes that is used to translate values between Java and JDBC layer.

See Also:
ExtendedType

getPkGenerator

PkGenerator getPkGenerator()
Returns primary key generator associated with this DbAdapter.


buildAttribute

DbAttribute buildAttribute(java.lang.String name,
                           java.lang.String typeName,
                           int type,
                           int size,
                           int precision,
                           boolean allowNulls)
Creates and returns a DbAttribute based on supplied parameters (usually obtained from database meta data).

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)
precision - database column precision (ignored if less than zero)
allowNulls - database column nullable parameter

bindParameter

void bindParameter(java.sql.PreparedStatement statement,
                   java.lang.Object object,
                   int pos,
                   int sqlType,
                   int precision)
                   throws java.sql.SQLException,
                          java.lang.Exception
Binds an object value to PreparedStatement's numbered parameter.

Throws:
java.sql.SQLException
java.lang.Exception

tableTypeForTable

java.lang.String tableTypeForTable()
Returns the name of the table type (as returned by DatabaseMetaData.getTableTypes) for a simple user table.


tableTypeForView

java.lang.String tableTypeForView()
Returns the name of the table type (as returned by DatabaseMetaData.getTableTypes) for a view table.


shouldRunBatchQuery

boolean shouldRunBatchQuery(DataNode node,
                            java.sql.Connection con,
                            BatchQuery query,
                            OperationObserver delegate)
                            throws java.sql.SQLException,
                                   java.lang.Exception
Deprecated. Since 1.2 this method is obsolete and is ignored across Cayenne.

Throws:
java.sql.SQLException
java.lang.Exception


Copyright © 2001-2006 Apache.org All Rights Reserved.