|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.java.ao.DatabaseProvider
net.java.ao.db.MySQLDatabaseProvider
public class MySQLDatabaseProvider
Constructor Summary | |
---|---|
MySQLDatabaseProvider(String uri,
String username,
String password)
|
Method Summary | |
---|---|
protected String |
convertTypeToString(DatabaseType<?> type)
Converts the specified type into the database-specific DDL String value. |
Class<? extends Driver> |
getDriverClass()
Returns the JDBC Driver class which corresponds to the database being abstracted. |
protected String |
renderAppend()
Generates any database-specific options which must be appended to the end of a table definition. |
protected String |
renderAutoIncrement()
Generates the DDL fragment required to specify an INTEGER field as auto-incremented. |
protected String |
renderCreateIndex(DDLIndex index)
Generates the database-specific DDL statement required to create a new index. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public MySQLDatabaseProvider(String uri, String username, String password)
Method Detail |
---|
public Class<? extends Driver> getDriverClass() throws ClassNotFoundException
DatabaseProvider
Returns the JDBC Driver class which corresponds to the database being abstracted. This should be implemented in such a way as to initialize and register the driver with JDBC. For most drivers, this requires code in the following form:
public Class<? extends Driver> getDriverClass() { return (Class<? extends Driver>) Class.forName("com.mysql.jdbc.Driver"); }
The following does not fire the driver's static initializer and thus will (usually) not work:
public Class<? extends Driver> getDriverClass() { return com.mysql.jdbc.Driver.class; }
If the driver is not on the classpath, a ClassNotFoundException
can and should be thrown (certain auto-magic configuration sections of
ActiveObjects depend upon this under certain circumstances).
getDriverClass
in class DatabaseProvider
Driver
implementation which corresponds to the
relevant database.
ClassNotFoundException
protected String convertTypeToString(DatabaseType<?> type)
DatabaseProvider
DatabaseType#getDefaultName()
method. Subclass implementations should be sure to make a super
call in order to ensure that both default naming and future special
cases are handled appropriately.
convertTypeToString
in class DatabaseProvider
type
- The type instance to convert to a DDL string.
DatabaseType.getDefaultName()
protected String renderAutoIncrement()
DatabaseProvider
Generates the DDL fragment required to specify an INTEGER field as
auto-incremented. For databases which do not support such flags (which
is just about every database exception MySQL), ""
is an
acceptable return value. This method should never return null
as it would cause the field rendering method to throw a NullPointerException
.
This method is abstract (as opposed to the other methods which are either defined against MySQL or simply empty) because of the vast differences in rendering auto-incremented fields across different databases. Also, it seemed like a terribly good idea at the time and I haven't found a compelling reason to change it.
renderAutoIncrement
in class DatabaseProvider
protected String renderAppend()
DatabaseProvider
Generates any database-specific options which must be appended to the end of a table definition. The only database I am aware of which requires this is MySQL. For example:
CREATE TABLE test ( id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(45), PRIMARY KEY(id) ) ENGINE=InnoDB;
The "ENGINE=InnoDB
" clause is what is returned by
this method. The default implementation simply returns
null
, signifying that no append should be rendered.
renderAppend
in class DatabaseProvider
null
protected String renderCreateIndex(DDLIndex index)
DatabaseProvider
null
returned.
renderCreateIndex
in class DatabaseProvider
index
- The index to create. This single instance contains all
of the data necessary to create the index, thus no separate
parameters (such as a DDLTable
) are required.
null
.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |