У меня есть существующая база данных, определенная через файлы HBM.XML (код и sql dml, сгенерированные с помощью инструментов Hibernate), и я ищу практический способ преобразования данных на существующие данные. Предположим следующее:Что такое практический процесс преобразования данных в живой системе при использовании спящего режима + генерации кода?
Исходная таблица определяется одним FK; существуют существующие данные. Пересмотренная таблица определяется двумя FK; два FK могут быть определены с помощью одного FK, используя поиск базы данных. Эта новая структура не будет влиять на ограничения целостности. Ничто другое не изменится.
В идеале я хочу, чтобы измененная таблица сохраняла имя исходной таблицы.
Почему я хочу это сделать? Изменение требования, которое заставило меня отменить первоначальную нормализацию.
Чтобы достичь этого, я планирую сделать следующее:
- Определите новое отображение через hbm.xml с пересмотренным определением таблицы. Создавайте определения Java и базы данных.
- Напишите модуль для чтения данных из старой таблицы и заполнения новой таблицы. Запустите этот модуль.
- Оставьте старую таблицу через SQL DML; удалить весь сгенерированный код, относящийся к старой таблице. Удалите файл HBM.XML для старой таблицы.
- Переименуйте HBM.XML измененной таблицы в имя класса старого сопоставления. Запустите генерацию кода Java ТОЛЬКО. Измените имя переработанной таблицы в базе данных напрямую.
/конец
Этот процесс является беспорядок, но я не уверен в том, как выполнить эти преобразования данных в живых системах, в частности, когда Hibernate и генерации кода участвуют. Одна из моих основных проблем заключается в том, что с индексом/ограничениями, которые генерируются для пересмотренной таблицы, могут возникать плохие вещи.
Если кто-то может помочь критиковать мой процесс/предложить улучшения/указать мне на другие ресурсы, это было бы очень признательно. Где-то, когда-то, кто-то, должно быть, сделал это с производственной системой, поэтому я полагаю, что это просто вопрос, где искать.