Как не использовать обновление схемы Hibernate - PullRequest
5 голосов
/ 14 апреля 2011

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

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

Говори!:)

Спасибо.

Ответы [ 3 ]

3 голосов
/ 14 апреля 2011

Взгляните на Liquibase . По сути, это система контроля версий для вашей схемы базы данных. также прекрасно интегрируется с Hibernate .

2 голосов
/ 14 апреля 2011

Посмотрите на Стратегии для работы с постоянно меняющимися требованиями к схемам MySQL? для аналогичного вопроса и его ответа.

Короче говоря, если у вас есть достаточное количество данных и вам нужно перенести их из одной схемы в другую, вам нужно будет написать сценарии SQL для изменения схемы и перемещения / преобразования данных.

0 голосов
/ 15 апреля 2011

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

Очевидно, что вы должны протестировать свое приложение, чтобы убедиться, что Hibernate работает правильно при переходе с одной версии на другую, но то же самое относится и к любому другому аспекту программного обеспечения.

Вы также должны знать, что может делать автообновление (например, создавать новые таблицы, добавлять новые индексы) и что оно не может (например, удалять таблицы, удалять ограничения). Пропущенные биты можно легко реализовать с помощью необработанного JDBC, опять же, не без тестирования.

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