public class EmbeddedDatabaseFactory extends Object
EmbeddedDatabase instance.
 Callers are guaranteed that the returned database has been fully initialized and populated.
The factory can be configured as follows:
generateUniqueDatabaseName to set a unique, random name
 for the database.
 setDatabaseName(java.lang.String) to set an explicit name for the database.
 setDatabaseType(org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType) to set the database type if you wish to
 use one of the supported types.
 setDatabaseConfigurer(org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseConfigurer) to configure support for a custom
 embedded database type.
 setDatabasePopulator(org.springframework.jdbc.datasource.init.DatabasePopulator) to change the algorithm used to
 populate the database.
 setDataSourceFactory(org.springframework.jdbc.datasource.embedded.DataSourceFactory) to change the type of
 DataSource used to connect to the database.
 After configuring the factory, call getDatabase() to obtain
 a reference to the EmbeddedDatabase instance.
| Modifier and Type | Field and Description | 
|---|---|
| static String | DEFAULT_DATABASE_NAMEDefault name for an embedded database: "testdb". | 
| Constructor and Description | 
|---|
| EmbeddedDatabaseFactory() | 
| Modifier and Type | Method and Description | 
|---|---|
| EmbeddedDatabase | getDatabase()Factory method that returns the embedded database
 instance, which is also a  DataSource. | 
| protected DataSource | getDataSource()Hook that gets the  DataSourcethat provides the connectivity to the
 embedded database. | 
| protected void | initDatabase()Hook to initialize the embedded database. | 
| void | setDatabaseConfigurer(EmbeddedDatabaseConfigurer configurer)Set the strategy that will be used to configure the embedded database instance. | 
| void | setDatabaseName(String databaseName)Set the name of the database. | 
| void | setDatabasePopulator(DatabasePopulator populator)Set the strategy that will be used to initialize or populate the embedded
 database. | 
| void | setDatabaseType(EmbeddedDatabaseType type)Set the type of embedded database to use. | 
| void | setDataSourceFactory(DataSourceFactory dataSourceFactory)Set the factory to use to create the  DataSourceinstance that
 connects to the embedded database. | 
| void | setGenerateUniqueDatabaseName(boolean generateUniqueDatabaseName)Set the  generateUniqueDatabaseNameflag to enable or disable
 generation of a pseudo-random unique ID to be used as the database name. | 
| protected void | shutdownDatabase()Hook to shut down the embedded database. | 
public static final String DEFAULT_DATABASE_NAME
public void setGenerateUniqueDatabaseName(boolean generateUniqueDatabaseName)
generateUniqueDatabaseName flag to enable or disable
 generation of a pseudo-random unique ID to be used as the database name.
 Setting this flag to true overrides any explicit name set
 via setDatabaseName(java.lang.String).
setDatabaseName(java.lang.String)public void setDatabaseName(String databaseName)
Defaults to "testdb".
Will be overridden if the generateUniqueDatabaseName flag
 has been set to true.
databaseName - name of the embedded databasesetGenerateUniqueDatabaseName(boolean)public void setDataSourceFactory(DataSourceFactory dataSourceFactory)
DataSource instance that
 connects to the embedded database.
 Defaults to SimpleDriverDataSourceFactory.
public void setDatabaseType(EmbeddedDatabaseType type)
Call this when you wish to configure one of the pre-supported types.
Defaults to HSQL.
type - the database typepublic void setDatabaseConfigurer(EmbeddedDatabaseConfigurer configurer)
Call this when you wish to use an embedded database type not already supported.
public void setDatabasePopulator(DatabasePopulator populator)
Defaults to null.
public EmbeddedDatabase getDatabase()
DataSource.protected void initDatabase()
If the generateUniqueDatabaseName flag has been set to true,
 the current value of the database name will
 be overridden with an auto-generated name.
 
Subclasses may call this method to force initialization; however, this method should only be invoked once.
After calling this method, getDataSource() returns the
 DataSource providing connectivity to the database.
protected void shutdownDatabase()
After calling, getDataSource() returns null.
 
Does nothing if no embedded database has been initialized.
@Nullable protected final DataSource getDataSource()
DataSource that provides the connectivity to the
 embedded database.
 Returns null if the DataSource has not been initialized
 or if the database has been shut down. Subclasses may call this method to
 access the DataSource instance directly.