| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > UUID в java |
| Автор: Grelloo 11.5.2006, 17:22 |
| Если функция генерирующая uuid в java? |
| Автор: ALKS 11.5.2006, 17:27 |
| http://www.google.de/search?q=java+uuid+generation&btnG=Suche&meta= |
| Автор: LSD 11.5.2006, 21:55 |
Начиная с JDK 1.5, есть java.util.UUID. |
| Автор: tux 12.5.2006, 01:43 | ||
Могу еще предложить такой классец:
|
| Автор: Domestic Cat 12.5.2006, 07:42 |
| http://tyrex.sourceforge.net/ Там есть класс tyrex.services.UUID если не ошибаюсь. |
| Автор: pvo 12.5.2006, 10:01 |
| http://jakarta.apache.org/commons/sandbox/id/ еще есть |
| Автор: Grelloo 15.5.2006, 10:08 |
| Ок, UUID замутить не так уж и сложно оказалось. Теперь у меня вот какая мысль появилась. Что если я сделаю java-приложение и буду записывать данные через сеть на несколько компьютеров и в несколько баз данных. Представим, что можно подключить к этому делу Hibernate, который будет создавать сам UUID. Но что если мы затем захотим кроме hibernate еще какой-нибудь инструмент подключить, который тоже будет генерить свои UUID. Я думаю вот как можно это решить: 1. Сделать супер-класс, в котором будет метод, генерирующий UUID 2. Все классы расширяющие данный супер-класс будут использовать этот метод Обеспечу ли я таким образом уникальность UUID для всех баз данных? |
| Автор: Grelloo 15.5.2006, 17:11 |
| Хорошо, но UUID не самый идеальный вариант для генерирования ID. Рассмотрим другой вариант. Пусть мы будем иметь для каждой базы данных определенный интервал id: база 1 - от 1 до 1000 база 2 - 1000 до 2000 и т. д. Будем тогда просто генерить id в данном интервале от начального значения, используя автоинкремент. Если будет добавляться новая база данных, то для нее будет выделен новый интервал Как это лучше реализовать функциями java? |
| Автор: tux 16.5.2006, 03:55 |
А чем UUID не устраивает? Пишем класс, который хранит регистр серверов (или баз данных или еще чего-то), соответствующие интервалы идентификаторов и значения последних выданных идентификаторов. Поскольку объект такого класса у нас должен быть один на весь пул серверов, то размещаем его в JNDI под определенным именем, по которому все серверы и будут получать объект (как вариант написать удаленный используя RMI, веб-сервисы или что-то еще). Но это решение действительно не самое оптимальное по следующим причинам:
Это я описал только часть проблем, которые нужно решить. Так чем такое решение лучше чем UUID, где алгоритм не связан с БД и генерирует вполне уникальные идентификаторы? |
| Автор: LSD 16.5.2006, 23:11 | ||
Если количество баз данных фиксировано, то можно использовать генерацию не последовательную, а с определенным шагом. Тогда не надо будет постоянно запрашивать новые и новые диапазоны. А вообще, в данной ситуации лучше всего UUID. |