генерация идентификаторов в Oracle с ORM с поддержкой гибернации

#java #oracle #hibernate #orm #uuid

#java #Oracle #гибернация #orm #uuid

Вопрос:

Существует старая база данных, которую необходимо перенести на новую, но процесс переноса займет значительное время, в течение которого старая БД будет оставаться работоспособной. В старой базе данных идентификаторы представляют собой последовательные номера, в новой нам нужны глобально уникальные идентификаторы, которые в случае гибернации мы собираемся (или собирались) сгенерировать, используя встроенную генерацию UUID в гибернации. Я понятия не имею о том, как это (UUID гибернации) работает, и не знаю, совпадает ли это с собственным поколением UUID в java. На самом деле hibernate предоставляет 2 стратегии генерации uuid (uuid и uuid2).

Проблема в том, что если мы используем генерацию гибернации, возможно, произойдет столкновение между идентификаторами, сгенерированными в режиме гибернации, и идентификаторами, поступающими из старой базы данных, пока она все еще работает. Мы собираемся написать ряд процедур oracle, которые помогут нам «быстро» переносить идентификаторы из старой базы данных в новую, но какой метод генерации идентификаторов мы должны использовать в этих процедурах, чтобы у нас не было конфликтов идентификаторов с идентификаторами, сгенерированными hibernate?

Мы можем использовать встроенный в oracle генератор GUID или написать процедуру на java и использовать собственный UUID-генератор java. Но нигде не написано, что эти 2 не будут создавать коллизии с идентификаторами, сгенерированными в режиме гибернации.

Комментарии:

1. UUID — это строки, а порядковые номера — числа. Как у вас могло возникнуть столкновение?

2. UUID — это 128-битное значение, представленное в виде пары длинных целых чисел, которые могут быть представлены в виде строки.

3. «Я понятия не имею, как это (UUID гибернации) работает», поэтому прочитайте руководство: docs.jboss.org/hibernate/core/3.6/reference/en-US/html /…

4. Насколько я понимаю, в настоящее время вы используете Oracle. Итак, какова ваша новая база данных?

5. @mattb, я уже видел предоставленную вами ссылку, там ничего не написано о совместимости идентификаторов, сгенерированных в режиме гибернации, и идентификаторов, сгенерированных oracle GUID / UUID, сгенерированных java. Я думаю, мне придется заглянуть в источники гибернации, чтобы узнать, как они генерируют свои идентификаторы.