Создание уникального идентификатора в классе Java

Я меньше знаком с фронтендом и только новичок в бэкэнде. Я создаю веб-страницу с помощью сервлетов, которые считывают данные человека из базы данных и отображают их на странице в виде списка. Каждая строка списка состоит из кнопки, с которой можно связаться. При нажатии на кнопку человеку, данные которого были выбраны, отправляется сообщение. Мой вопрос: как создать уникальный идентификатор, нажав кнопку, чтобы сгенерировать идентификатор сообщения в таблице сообщений базы данных, ожидая ответа от выбранного человека?


person meowth    schedule 16.02.2018    source источник
comment
Обычно это работа с отметками времени. Если у вас много пользователей, возможно, какой-то user_id объединен с меткой времени, чтобы сделать его более уникальным.   -  person sorak    schedule 16.02.2018
comment
Отметки времени не могут быть на 100% уникальными, даже если используется префикс. Я бы посчитал их обходным решением.   -  person dr0i    schedule 16.02.2018


Ответы (2)


Все достойные базы данных позволяют генерировать уникальные идентификаторы. Распространенным способом является использование последовательностей, но он может быть даже проще, PostgreSQL, например, предоставляет типы SERIAL и BIGSERIAL, которые автоматически создают новый идентификатор для каждой вставленной строки.

Короче говоря: если вам нужен только другой идентификатор для каждой строки, используйте эквивалент SERIAL, предоставленный вашей базой данных, а если вам нужен больший контроль, напрямую используйте SEQUENCE (или его эквивалент).

person Serge Ballesta    schedule 16.02.2018

Использовать генератор UUID

Начиная с Java 5, класс UUID предоставляет простые средства для генерации уникальных идентификаторов. Идентификаторы, сгенерированные UUID, на самом деле являются универсально уникальными идентификаторами. Пример

import java.util.UUID;

public class GenerateUUID {

  public static final void main(String... aArgs){
    //generate random UUIDs
    UUID idOne = UUID.randomUUID();
    UUID idTwo = UUID.randomUUID();
    log("UUID One: " + idOne);
    log("UUID Two: " + idTwo);
  }

  private static void log(Object aObject){
    System.out.println( String.valueOf(aObject) );
  }
} 

Example run:
>java -cp . GenerateUUID
UUID One: 067e6162-3b6f-4ae2-a171-2470b63dff00 
UUID Two: 54947df8-0e9e-4471-a2f9-9af509fb5889

См. Ссылку: http://www.javapractices.com/topic/TopicAction.do?Id=56

Я надеюсь, это поможет.

person Sumesh TG    schedule 16.02.2018