Можно ли обновить схему БД с помощью EJB? - PullRequest
0 голосов
/ 30 октября 2008

Допустим, у меня есть EJB-приложение, которое определяет некоторые сущности и отношения между ними. Я подумал, что схему БД можно легко создать из сущностей. Так что теперь приложение работает, но через некоторое время необходимо изменить некоторые отношения, например, один-к-одному должен стать один-ко-многим, могу ли я обновить свою БД, чтобы сделать это БЕЗ потери старых данных?

Ответы [ 3 ]

1 голос
/ 02 ноября 2008

В случае использования Hibernate в качестве реализации JPA вы можете передать свойство hibernate.hbm2ddl.auto. Если вы изменяете схему вручную, вам следует подумать о том, чтобы установить ее для «проверки». Также вы можете попробовать «обновить», который должен позаботиться о простых вещах без ручных изменений.

1 голос
/ 15 ноября 2008

Звучит так, как будто вы позволяете контейнеру автоматически генерировать схему из ваших сущностей, чтобы вам не приходилось ломать голову, создавая собственный ORM (почему бы и нет?). Если это так, в проекте Apache есть изящный инструмент называемый DdlUtils, который может оказаться полезным.

Сначала сделайте резервную копию старой базы данных, затем повторно разверните обновленное приложение, чтобы создать пустую базу данных с новой схемой. Используя DdlUtils, вы можете подключиться к двум базам данных и сгенерировать SQL, необходимый для переноса вашей старой базы данных в новую схему, сохраняя ваши данные.

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

1 голос
/ 31 октября 2008

Конечно можно! Что именно вы должны сделать, зависит от множества различных факторов: какой ORM вы используете? Какой контейнер EJB? Какая СУБД?

Обычно применяются следующие шаги:

  1. Остановить приложение
  2. Резервное копирование вашей базы данных
  3. Редактирование схемы базы данных
  4. Развернуть приложение
  5. Адаптируйте приложение к вашей новой схеме. Не забудьте отредактировать вашу ORM-конфигурацию!
  6. Повторное развертывание приложения
  7. Перезапустите приложение

Чтобы получить более подробный (и полезный) ответ, вам нужно будет дать нам гораздо больше информации о текущей ситуации, о том, чего вы хотите достичь и что вы собираетесь изменить.

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