Package org.apache.cayenne.dba.mysql
Class MySQLAdapter
java.lang.Object
org.apache.cayenne.dba.JdbcAdapter
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
supportsFkConstraints
will be 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
- Adapter name: org.apache.cayenne.dba.mysql.MySQLAdapter
- DB URL: jdbc:mysql://serverhostname/dbname
- Driver Class: com.mysql.jdbc.Driver
-
Field Summary
Fields Modifier and Type Field Description protected String
storageEngine
Fields inherited from class org.apache.cayenne.dba.JdbcAdapter
batchQueryBuilderFactory, caseInsensitiveCollations, ejbqlTranslatorFactory, extendedTypes, logger, quotingStrategy, resourceLocator, supportsBatchUpdates, supportsGeneratedKeys, supportsUniqueConstraints, typesHandler
-
Constructor Summary
Constructors Constructor Description MySQLAdapter(RuntimeProperties runtimeProperties, List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ResourceLocator resourceLocator, ValueObjectTypeRegistry valueObjectTypeRegistry)
-
Method Summary
Modifier and Type Method Description void
bindParameter(PreparedStatement statement, ParameterBinding binding)
Binds an object value to PreparedStatement's parameter.DbAttribute
buildAttribute(String name, 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 EJBQLTranslatorFactory
createEJBQLTranslatorFactory()
Creates and returns anEJBQLTranslatorFactory
used to generate visitors for EJBQL to SQL translations.protected PkGenerator
createPkGenerator()
Creates and returns a primary key generator.protected QuotingStrategy
createQuotingStrategy()
String
createTable(DbEntity entity)
Overrides super implementation to explicitly set table engine to InnoDB if FK constraints are supported by this adapter.void
createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column)
Appends AUTO_INCREMENT clause to the column definition for generated columns.protected void
createTableAppendPKClause(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.Collection<String>
dropTableStatements(DbEntity table)
Returns a collection of SQL statements needed to drop a database table.SQLAction
getAction(Query query, DataNode node)
Uses special action builder to create the right action.QualifierTranslator
getQualifierTranslator(QueryAssembler queryAssembler)
Creates and returns a default implementation of a qualifier translator.SelectTranslator
getSelectTranslator(SelectQuery<?> query, EntityResolver entityResolver)
Returns a SelectTranslator that works with the adapter target database.String
getStorageEngine()
List<String>
getSystemCatalogs()
void
setStorageEngine(String engine)
boolean
typeSupportsLength(int type)
Returns true if supplied type can have a length attribute as a part of column definitionMethods inherited from class org.apache.cayenne.dba.JdbcAdapter
createFkConstraint, createUniqueConstraint, externalTypesForJdbcType, findResource, getBatchTerminator, getEjbqlTranslatorFactory, getExtendedTypes, getJdbcEventLogger, getPkGenerator, getQuotingStrategy, getSystemSchemas, getType, initExtendedTypes, setEjbqlTranslatorFactory, setPkGenerator, setSupportsBatchUpdates, setSupportsGeneratedKeys, setSupportsUniqueConstraints, sizeAndPrecision, supportsBatchUpdates, supportsCatalogsOnReverseEngineering, supportsGeneratedKeys, supportsUniqueConstraints, tableTypeForTable, tableTypeForView, unwrap
-
Field Details
-
storageEngine
-
-
Constructor Details
-
MySQLAdapter
public MySQLAdapter(RuntimeProperties runtimeProperties, List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes, List<ExtendedTypeFactory> extendedTypeFactories, ResourceLocator resourceLocator, ValueObjectTypeRegistry valueObjectTypeRegistry)
-
-
Method Details
-
createQuotingStrategy
- Overrides:
createQuotingStrategy
in classJdbcAdapter
-
getSelectTranslator
Description copied from interface:DbAdapter
Returns a SelectTranslator that works with the adapter target database.- Specified by:
getSelectTranslator
in interfaceDbAdapter
- Overrides:
getSelectTranslator
in classJdbcAdapter
-
getQualifierTranslator
Description copied from class:JdbcAdapter
Creates and returns a default implementation of a qualifier translator.- Specified by:
getQualifierTranslator
in interfaceDbAdapter
- Overrides:
getQualifierTranslator
in classJdbcAdapter
-
getAction
Uses special action builder to create the right action.- Specified by:
getAction
in interfaceDbAdapter
- Overrides:
getAction
in classJdbcAdapter
- Since:
- 1.2
-
dropTableStatements
Description copied from interface:DbAdapter
Returns a collection of SQL statements needed to drop a database table.- Specified by:
dropTableStatements
in interfaceDbAdapter
- Overrides:
dropTableStatements
in classJdbcAdapter
- Since:
- 3.0
-
configureExtendedTypes
Installs appropriate ExtendedTypes used as converters for passing values between JDBC and Java layers.- Overrides:
configureExtendedTypes
in classJdbcAdapter
-
buildAttribute
public DbAttribute buildAttribute(String name, 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 interfaceDbAdapter
- Overrides:
buildAttribute
in classJdbcAdapter
- 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)precision
- database column scale, i.e. the number of decimal digits (ignored if less than zero)allowNulls
- database column nullable parameter
-
bindParameter
public void bindParameter(PreparedStatement statement, ParameterBinding binding) throws SQLException, ExceptionDescription copied from interface:DbAdapter
Binds an object value to PreparedStatement's parameter.- Specified by:
bindParameter
in interfaceDbAdapter
- Overrides:
bindParameter
in classJdbcAdapter
- Throws:
SQLException
Exception
-
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 classJdbcAdapter
-
createEJBQLTranslatorFactory
Description copied from class:JdbcAdapter
Creates and returns anEJBQLTranslatorFactory
used to generate visitors for EJBQL to SQL translations. This method should be overriden by subclasses that need to customize EJBQL generation.- Overrides:
createEJBQLTranslatorFactory
in classJdbcAdapter
- Since:
- 3.0
-
createTable
Overrides super implementation to explicitly set table engine to InnoDB if FK constraints are supported by this adapter.- Specified by:
createTable
in interfaceDbAdapter
- Overrides:
createTable
in classJdbcAdapter
-
createTableAppendPKClause
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 classJdbcAdapter
- Since:
- 1.2
-
createTableAppendColumn
Appends AUTO_INCREMENT clause to the column definition for generated columns.- Specified by:
createTableAppendColumn
in interfaceDbAdapter
- Overrides:
createTableAppendColumn
in classJdbcAdapter
- Parameters:
sqlBuffer
- theStringBuffer
to append the column type tocolumn
- theDbAttribute
defining the column to append type for
-
typeSupportsLength
public boolean typeSupportsLength(int type)Description copied from class:JdbcAdapter
Returns true if supplied type can have a length attribute as a part of column definition- Specified by:
typeSupportsLength
in interfaceDbAdapter
- Overrides:
typeSupportsLength
in classJdbcAdapter
-
getSystemCatalogs
- Specified by:
getSystemCatalogs
in interfaceDbAdapter
- Overrides:
getSystemCatalogs
in classJdbcAdapter
- Returns:
- list of system catalogs
-
getStorageEngine
- Since:
- 3.0
-
setStorageEngine
- Since:
- 3.0
-