Каков практический процесс преобразования данных в работающей системе при использовании hibernate + генерация кода? - PullRequest
1 голос
/ 26 августа 2010

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

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

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

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

Для этого я планирую сделать следующее:

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

/ * конец 1021 *

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

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

1 Ответ

0 голосов
/ 26 августа 2010

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

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