Шаблон миграции базы данных для Java? - PullRequest
0 голосов
/ 22 марта 2010

Я работаю над кодом миграции базы данных на Java. Я также использую шаблон фабрики, поэтому я могу использовать различные виды баз данных. И каждый вид базы данных, которую я использую, реализует общий интерфейс.

То, что я хотел бы сделать, - это выполнить проверку миграции, которая является внутренней по отношению к классу и автоматически запускает некоторый код обновления схемы базы данных. Фактическое обновление довольно простое (я проверяю версию схемы в таблице и сравниваю с константой в моем приложении, чтобы решить, переносить или нет, и между какими версиями схемы).

Чтобы сделать это автоматическим, я думал, что тест должен жить внутри (или вызываться из) конструктора. Хорошо, достаточно справедливо, это достаточно просто. Моя проблема в том, что я не хочу, чтобы тест выполнялся каждый раз, когда я создаю экземпляр объекта базы данных (он выполняет запрос, поэтому запуск его в каждой конструкции неэффективен). Так может быть это должен быть статический метод класса? Я предполагаю, что мой вопрос, что является хорошим шаблоном дизайна для этого типа проблемы? Должен быть простой способ обеспечить выполнение теста миграции только в том случае, если ИЛИ является суперэффективным.

Ответы [ 3 ]

3 голосов
/ 22 марта 2010

Взгляните на liquibase .
Вот статья ibm developerWorks, в которой есть хороший обзор http://www.ibm.com/developerworks/java/library/j-ap08058/index.html

2 голосов
/ 16 сентября 2010

Flyway идеально соответствует вашим потребностям.Он поддерживает несколько баз данных, сравнивает версию схемы с доступными миграциями на пути к классам и соответственно обновляет базу данных.

Вы можете встроить ее в свое приложение и запустить его один раз при запуске, как описано в разделе Flywayдокументы .

Примечание: Flyway также поставляется с плагином Maven и возможностью очистки существующей схемы на случай, если вы что-то напутали в процессе разработки.

[Отказ от ответственности: я одинразработчиков Flyway]

0 голосов
/ 22 марта 2010

Я использую iBatis SQL Mapper, и действительно нравится. Следующая версия, iBatis 3.0, имеет поддержку миграции схемы . Это все еще в бета-версии, но я планирую использовать его, когда он приблизится к кандидату на релиз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...