org.springframework.jdbc.datasource.embedded

## Class EmbeddedDatabaseFactory

- java.lang.Object
- - org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory

- Direct Known Subclasses:
    EmbeddedDatabaseFactoryBean

      public class EmbeddedDatabaseFactory
      extends Object

  Creates a `EmbeddedDatabase` instance. Callers are guaranteed that the returned database has been fully initialized and populated.

  Can be configured:
  Call `setDatabaseName(String)` to change the name of the database.
  Call `setDatabaseType(EmbeddedDatabaseType)` to set the database type if you wish to use one of the supported types.
  Call `setDatabaseConfigurer(EmbeddedDatabaseConfigurer)` to configure support for your own embedded database type.
  Call `setDatabasePopulator(DatabasePopulator)` to change the algorithm used to populate the database.
  Call `setDataSourceFactory(DataSourceFactory)` to change the type of DataSource used to connect to the database.
  Call `getDatabase()` to get the `EmbeddedDatabase` instance.

  Since:
    3.0
  Author:
    Keith Donald, Juergen Hoeller

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `EmbeddedDatabaseFactory()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `EmbeddedDatabase` | `getDatabase()` Factory method that returns the embedded database instance.
    `protected DataSource` | `getDataSource()` Hook that gets the DataSource that 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 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 DataSource instance that connects to the embedded database.
    `protected void` | `shutdownDatabase()` Hook to shutdown the embedded database.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### EmbeddedDatabaseFactory

          public EmbeddedDatabaseFactory()

  - ### Method Detail

    - #### setDatabaseName

          public void setDatabaseName(String databaseName)

      Set the name of the database. Defaults to "testdb".
      Parameters:
        `databaseName` - name of the test database

    - #### setDataSourceFactory

          public void setDataSourceFactory(DataSourceFactory dataSourceFactory)

      Set the factory to use to create the DataSource instance that connects to the embedded database.

      Defaults to `SimpleDriverDataSourceFactory`.

    - #### setDatabaseType

          public void setDatabaseType(EmbeddedDatabaseType type)

      Set the type of embedded database to use. Call this when you wish to configure one of the pre-supported types. Defaults to HSQL.
      Parameters:
        `type` - the test database type

    - #### setDatabaseConfigurer

          public void setDatabaseConfigurer(EmbeddedDatabaseConfigurer configurer)

      Set the strategy that will be used to configure the embedded database instance.

      Call this when you wish to use an embedded database type not already supported.

    - #### setDatabasePopulator

          public void setDatabasePopulator(DatabasePopulator populator)

      Set the strategy that will be used to populate the embedded database. Defaults to null.
      See Also:
        `DataSourceInitializer.setDatabasePopulator(org.springframework.jdbc.datasource.init.DatabasePopulator)`

    - #### getDatabase

          public EmbeddedDatabase getDatabase()

      Factory method that returns the embedded database instance.

    - #### initDatabase

          protected void initDatabase()

      Hook to initialize the embedded database. Subclasses may call to force initialization. After calling this method, `getDataSource()` returns the DataSource providing connectivity to the db.

    - #### shutdownDatabase

          protected void shutdownDatabase()

      Hook to shutdown the embedded database. Subclasses may call to force shutdown. After calling, `getDataSource()` returns null. Does nothing if no embedded database has been initialized.

    - #### getDataSource

          protected final DataSource getDataSource()

      Hook that gets the DataSource that provides the connectivity to the embedded database.

      Returns `null` if the DataSource has not been initialized or the database has been shut down. Subclasses may call to access the DataSource instance directly.