При обработке БД многие места генерируют PK как auto increment
(на самом деле PK следует использовать как автоинкремент)
Однако, если это значение раскрывается как URL, его можно легко предсказать
Модель стала предсказуемой и уязвимой для атак

Итак, решение…

Для клиентского доступа используйте непредсказуемый случайный индекс,
для доступа к серверу используйте auto increment с большей производительностью
, чем случайный индекс

В этой статье я объясню, как использовать случайный индекс
Это UUID.

Что такое UUID (универсальный уникальный идентификатор)?

Стандартные соглашения для создания идентификатора с гарантированной уникальностью в сети
Он связан с использованием в общей сложности 32 шестнадцатеричных строк и 4 '-'
вот так69bf059a-ab3b-4ad4–8013–287f8ae3a4db
Существует много типов UUID, но чаще всего используется UUID4, созданный на основе временных меток.

На самом деле использование UUID в качестве PK нецелесообразно
Проблемы с емкостью, проблемы со скоростью индексирования

Поэтому измените порядок так, чтобы порядок был гарантирован в какой-то степени

1–2–3–4–5 → 32145
69bf059a-ab3b-4ad4–8013–287f8ae3a4db
1: 69bf059a
2: ab3b
3: 4ad4
4: 8013
5: 287f8ae3a4db
--> 4ad4ab3b69bf059a8013287f8ae3a4db

Подробнее см. здесь
https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way

Теперь попробую реализовать на Java.

String uuid = UUID.randomUUID().toString();
String[] arr_uuid = uuid.split("-");
String change_uuid = arr_uuid[2] + arr_uuid[1] + arr_uuid[0] + arr_uuid[3] + arr_uuid[4];
return change_uuid;

Я думаю, можно использовать его как Util