Я хочу, чтобы мой POJO-объект при создании генерировал свой уникальный IP адрес не с числа 1, а например, с числа 220000. Как мне такое сделать?
И ещё я хочу, если это возможно, чтобы объект генерировал случайный идентификатор не посредственно, а в диапазоне 2200000-4500000 случайное число, при этом, проверял, чтобы идентификатор не повторялся.
Java
Вопрос про работу с базой данных c JPA
Плохая идея, чтобы генерировать случайное число в диапазоне. Чем больше будет значений в бд, тем чаще будут повторяться ключи и тем больше запросов придется сделать к бд. Вот представь, что ты хочешь генерировать 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
Шаг 1 - выпало 5, идем проверять в бд есть ли там id 5, 5 нет, записываем
шаг 2 - выпало 2, идем проверять в бд есть ли там id 2, 2 нет, записываем
шаг 3 - выпало 5, идем проверять в бд, 5 там есть, генерируем снова. выпало 2, идем в бд проверять и тд, понятна идея? Генерировать id таким образом крайне неэффективно.
На счет как сделать генерацию с определенного числа не подскажу, можно загуглить в сторону @GenericGenerator - это аннотация hibernate, там разные стратегии генерации id есть. Например в этой статье рассматривается нечто похожее https://www.baeldung.com/hibernate-identifiers
Алиакбар Исетов
можно и шустро проверять... без запросов в базу каждый раз... при запуске программы загружаешь в какой-то "кэш" уже существующие ID
если вы собираетесь указывать какой ID будет у вашей записи в базе, то это мягко говоря ***вая мысль... база даёт вам возможность установить с какого номера начать... база даёт вам возможность задать нумерацию для каждой таблицы или одну сквозную... вот и на этом и успокойтесь... эти автоматически заданные ID для интеграции данных... это как запись паспортных данных... есть номер записи (уникальный) и есть номер паспорта (тоже уникальный)
вот то что вы в диапазоне там случайным образом выбирать собрались -- это уже дело вашей программы, а не базы...
да... можно и там процедуру какую-то настрадать чтоб она генерировала вам
то случайное что-то... но вот приспичит вам потом каким-то иным способом генерировать -- и будете базу переделывать...
в вашем приложении это пишется весьма легко... и если немного погуглить, то можно уже готовый "генератор" найти.... было бы желание....
вот то что вы в диапазоне там случайным образом выбирать собрались -- это уже дело вашей программы, а не базы...
да... можно и там процедуру какую-то настрадать чтоб она генерировала вам
то случайное что-то... но вот приспичит вам потом каким-то иным способом генерировать -- и будете базу переделывать...
в вашем приложении это пишется весьма легко... и если немного погуглить, то можно уже готовый "генератор" найти.... было бы желание....
Похожие вопросы
- Как назвается структура данных в программировании (C#), где доступ к каждому элементу осуществляется по имени?
- C# Помогите написать генератор паролей на C# ,что бы он мог генерировать нужное кол-во паролей.
- Почему вакансий программистов c# меньше, чем вакансий java?
- Какой язык лучше: Java или C++?
- В чем отличие JAVA от C# и C++,по моему синтаксис кодов одинаковый?
- Java, алгоритмы и структуры данных.
- Зачем кэшировать базы данных?
- Знающим. Почему среда программирования для Android JAVA а не C++? имею ввиду в Android Studio Thank you
- Что лучше java или C++?
- Если я буду знать очень хорошо C#, алгоритмы, SQL, и др. вроде умения пользоваться ПК, средой, я хороший прогер?