Java

Вопрос про работу с базой данных c JPA

Я хочу, чтобы мой POJO-объект при создании генерировал свой уникальный IP адрес не с числа 1, а например, с числа 220000. Как мне такое сделать?

И ещё я хочу, если это возможно, чтобы объект генерировал случайный идентификатор не посредственно, а в диапазоне 2200000-4500000 случайное число, при этом, проверял, чтобы идентификатор не повторялся.
Виталий М
Виталий М
1 675
Плохая идея, чтобы генерировать случайное число в диапазоне. Чем больше будет значений в бд, тем чаще будут повторяться ключи и тем больше запросов придется сделать к бд. Вот представь, что ты хочешь генерировать id случайно в диапазоне от 1 до 10.
Шаг 1 - выпало 5, идем проверять в бд есть ли там id 5, 5 нет, записываем
шаг 2 - выпало 2, идем проверять в бд есть ли там id 2, 2 нет, записываем
шаг 3 - выпало 5, идем проверять в бд, 5 там есть, генерируем снова. выпало 2, идем в бд проверять и тд, понятна идея? Генерировать id таким образом крайне неэффективно.
На счет как сделать генерацию с определенного числа не подскажу, можно загуглить в сторону @GenericGenerator - это аннотация hibernate, там разные стратегии генерации id есть. Например в этой статье рассматривается нечто похожее https://www.baeldung.com/hibernate-identifiers
*zho #
*zho #
40 393
Лучший ответ
Алиакбар Исетов можно и шустро проверять... без запросов в базу каждый раз... при запуске программы загружаешь в какой-то "кэш" уже существующие ID
если вы собираетесь указывать какой ID будет у вашей записи в базе, то это мягко говоря ***вая мысль... база даёт вам возможность установить с какого номера начать... база даёт вам возможность задать нумерацию для каждой таблицы или одну сквозную... вот и на этом и успокойтесь... эти автоматически заданные ID для интеграции данных... это как запись паспортных данных... есть номер записи (уникальный) и есть номер паспорта (тоже уникальный)
вот то что вы в диапазоне там случайным образом выбирать собрались -- это уже дело вашей программы, а не базы...
да... можно и там процедуру какую-то настрадать чтоб она генерировала вам
то случайное что-то... но вот приспичит вам потом каким-то иным способом генерировать -- и будете базу переделывать...
в вашем приложении это пишется весьма легко... и если немного погуглить, то можно уже готовый "генератор" найти.... было бы желание....