2010-08-26 1 views
1

У меня есть существующая база данных, определенная через файлы HBM.XML (код и sql dml, сгенерированные с помощью инструментов Hibernate), и я ищу практический способ преобразования данных на существующие данные. Предположим следующее:Что такое практический процесс преобразования данных в живой системе при использовании спящего режима + генерации кода?

Исходная таблица определяется одним FK; существуют существующие данные. Пересмотренная таблица определяется двумя FK; два FK могут быть определены с помощью одного FK, используя поиск базы данных. Эта новая структура не будет влиять на ограничения целостности. Ничто другое не изменится.

В идеале я хочу, чтобы измененная таблица сохраняла имя исходной таблицы.

Почему я хочу это сделать? Изменение требования, которое заставило меня отменить первоначальную нормализацию.

Чтобы достичь этого, я планирую сделать следующее:

  1. Определите новое отображение через hbm.xml с пересмотренным определением таблицы. Создавайте определения Java и базы данных.
  2. Напишите модуль для чтения данных из старой таблицы и заполнения новой таблицы. Запустите этот модуль.
  3. Оставьте старую таблицу через SQL DML; удалить весь сгенерированный код, относящийся к старой таблице. Удалите файл HBM.XML для старой таблицы.
  4. Переименуйте HBM.XML измененной таблицы в имя класса старого сопоставления. Запустите генерацию кода Java ТОЛЬКО. Измените имя переработанной таблицы в базе данных напрямую.

/конец

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

Если кто-то может помочь критиковать мой процесс/предложить улучшения/указать мне на другие ресурсы, это было бы очень признательно. Где-то, когда-то, кто-то, должно быть, сделал это с производственной системой, поэтому я полагаю, что это просто вопрос, где искать.

ответ

0

Ваш процесс выглядит отлично. Но я добавлю дополнительный шаг, чтобы убедиться, что переход в порядке до шага 1: создать представление базы данных, которое будет представлять вашу новую схему, и создать классы .hbm/java для ее использования. Убедитесь, что старые таблицы не читаются в приложении (через пользовательские настройки). Затем разверните приложение в рабочей среде и проверьте целостность данных в течение определенного периода времени. Когда все выглядит нормально, вы можете продолжить шаги 2,3,4 ...

 Смежные вопросы

  • Нет связанных вопросов^_^