Хотя мой ответ может быть не таким длинным, как у Ремуса, я обнаружил, что это действительно хорошее решение. Я еще не настроил его на производство, так что YMMV *.
LiquiBase
По сути, это XML-файл, в котором вы вносите изменения в свою базу данных в виде новых элементов внутри XML-файла. Например:
<createTable tableName="department">
<column name="id" type="int">
<constraints primaryKey="true" nullable="false"/>
</column>
Он имеет полностью продуманный синтаксис, поэтому вы можете делать все, что угодно, с вашей базой данных.
Вы также указываете в своей установке Liquibase, какую базу данных вы хотите создать для версий. Затем вы «запускаете» .xml с включенным исполняемым файлом Java (файл jar). Это по существу воссоздает те изменения, которые указаны в XML, в вашей базе данных.
Настоящим козырем является то, что вы храните этот XML-файл в той же версионной папке, что и ваш код. Так что в моем случае это был Git. У меня был этот XML-файл в папке моего проекта (того же уровня, что и /.git), и затем всякий раз, когда я переключал ветки, XML-файл менялся на эту версию ветки, и я запускал файл .jar, и моя база данных теперь отображала эту ветку.
* Примечание: я не закончил реализацию, потому что у меня были проблемы с подключением Java к SQL Server. Нуждаются в драйверах JDBC и так далее, и я был не в настроении. Следовательно, ваш пробег может варьироваться.