Мы используем MySQL и flyway для управления миграцией.
Для модульного тестирования и простых интеграционных тестов мы используем H2 в базе данных памяти с параметром MODE = MySQL.Mode = MySQL позволяет H2 db обрабатывать большую часть MySQL диалекта.
Наш тестовый источник данных в конфигурации Spring настроен так:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
<property name="driverClassName" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:mem:testdb;MODE=MySQL;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE" />
</bean>
(Если вы не знаете Spring - XML преобразуется в вызов нового BasicDataSource, а затем вызовите setDriverClassName и setUrlв созданном экземпляре)
Затем мы используем flyway на источнике данных для создания схемы и чтения, как если бы мы использовали обычную базу данных MySQL:
<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">
<property name="dataSource" ref="dataSource" />
<property name="cleanOnValidationError" value="false" />
<property name="initOnMigrate" value="true" />
<property name="sqlMigrationSuffix" value=".ddl" />
</bean>
Вы также можете просто использовать dataSourcebean в jdbcTemplate и запускайте некоторые сценарии SQL таким образом или запускайте несколько сценариев MySQL, используя тег <jdbc:initialize-database...>
.