org.apache.cayenne.dba.mysql
Class MySQLAdapter

java.lang.Object
  extended by org.apache.cayenne.dba.JdbcAdapter
      extended by org.apache.cayenne.dba.mysql.MySQLAdapter
All Implemented Interfaces:
DbAdapter

public class MySQLAdapter
extends JdbcAdapter

DbAdapter implementation for MySQL RDBMS.

Foreign Key Constraint Handling

Foreign key constraints are supported by InnoDB engine and NOT supported by MyISAM engine. This adapter by default assumes MyISAM, so JdbcAdapter.supportsFkConstraints() will return false. Users can manually change this by calling setSupportsFkConstraints(true) or better by using an AutoAdapter, i.e. not entering the adapter name at all for the DataNode, letting Cayenne guess it in runtime. In the later case Cayenne will check the table_type MySQL variable to detect whether InnoDB is the default, and configure the adapter accordingly.

Sample Connection Settings

Author:
Andrus Adamchik

Field Summary
 
Fields inherited from class org.apache.cayenne.dba.JdbcAdapter
extendedTypes, pkGenerator, supportsBatchUpdates, supportsFkConstraints, supportsGeneratedKeys, supportsUniqueConstraints, typesHandler
 
Constructor Summary
MySQLAdapter()
           
 
Method Summary
 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).
protected  void configureExtendedTypes(ExtendedTypeMap map)
          Installs appropriate ExtendedTypes used as converters for passing values between JDBC and Java layers.
protected  PkGenerator createPkGenerator()
          Creates and returns a primary key generator.
 java.lang.String createTable(DbEntity entity)
          Overrides super implementation to explicitly set table engine to InnoDB if FK constraints are supported by this adapter.
protected  void createTableAppendColumn(java.lang.StringBuffer sqlBuffer, DbAttribute column)
          Appends AUTO_INCREMENT clause to the column definition for generated columns.
protected  void createTableAppendPKClause(java.lang.StringBuffer sqlBuffer, DbEntity entity)
          Customizes PK clause semantics to ensure that generated columns are in the beginning of the PK definition, as this seems to be a requirement for InnoDB tables.
 java.lang.String dropTable(DbEntity entity)
          Returns a SQL string to drop a table corresponding to ent DbEntity.
 SQLAction getAction(Query query, DataNode node)
          Uses special action builder to create the right action.
 java.lang.String tableTypeForView()
          Returns null, since views are not yet supported in MySQL.
 
Methods inherited from class org.apache.cayenne.dba.JdbcAdapter
bindParameter, createDataNode, createFkConstraint, createUniqueConstraint, externalTypesForJdbcType, findAdapterResource, getBatchTerminator, getExtendedTypes, getPkGenerator, getQualifierTranslator, getQueryTranslator, queryTranslatorClass, setPkGenerator, setSupportsBatchUpdates, setSupportsFkConstraints, setSupportsGeneratedKeys, setSupportsUniqueConstraints, shouldRunBatchQuery, supportsBatchUpdates, supportsFkConstraints, supportsGeneratedKeys, supportsUniqueConstraints, tableTypeForTable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MySQLAdapter

public MySQLAdapter()
Method Detail

getAction

public SQLAction getAction(Query query,
                           DataNode node)
Uses special action builder to create the right action.

Specified by:
getAction in interface DbAdapter
Overrides:
getAction in class JdbcAdapter
Since:
1.2

dropTable

public java.lang.String dropTable(DbEntity entity)
Description copied from class: JdbcAdapter
Returns a SQL string to drop a table corresponding to ent DbEntity.

Specified by:
dropTable in interface DbAdapter
Overrides:
dropTable in class JdbcAdapter

configureExtendedTypes

protected void configureExtendedTypes(ExtendedTypeMap map)
Installs appropriate ExtendedTypes used as converters for passing values between JDBC and Java layers.

Overrides:
configureExtendedTypes in class JdbcAdapter

buildAttribute

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

Specified by:
buildAttribute in interface DbAdapter
Overrides:
buildAttribute in class JdbcAdapter
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

tableTypeForView

public java.lang.String tableTypeForView()
Returns null, since views are not yet supported in MySQL. Views are available on newer versions of MySQL.

Specified by:
tableTypeForView in interface DbAdapter
Overrides:
tableTypeForView in class JdbcAdapter

createPkGenerator

protected PkGenerator createPkGenerator()
Creates and returns a primary key generator. Overrides superclass implementation to return an instance of MySQLPkGenerator that does the correct table locking.

Overrides:
createPkGenerator in class JdbcAdapter

createTable

public java.lang.String createTable(DbEntity entity)
Overrides super implementation to explicitly set table engine to InnoDB if FK constraints are supported by this adapter.

Specified by:
createTable in interface DbAdapter
Overrides:
createTable in class JdbcAdapter

createTableAppendPKClause

protected void createTableAppendPKClause(java.lang.StringBuffer sqlBuffer,
                                         DbEntity entity)
Customizes PK clause semantics to ensure that generated columns are in the beginning of the PK definition, as this seems to be a requirement for InnoDB tables.

Overrides:
createTableAppendPKClause in class JdbcAdapter
Since:
1.2

createTableAppendColumn

protected void createTableAppendColumn(java.lang.StringBuffer sqlBuffer,
                                       DbAttribute column)
Appends AUTO_INCREMENT clause to the column definition for generated columns.

Overrides:
createTableAppendColumn in class JdbcAdapter


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