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