Что такое хороший способ реализации идентификатора? - PullRequest
2 голосов
/ 29 января 2020

Я создаю небольшой проект для себя, и каждый раз, когда создается Employee, ему присваивается идентификатор.

Этот идентификатор генерируется путем нахождения .size () ArrayList .

//Creating the Employee Id
int employeeID = listEmployee.size() +1;

Я знаю, что это плохая идея, потому что при удалении сотрудника идентификатор будет помечаться как дубликат.

Это функция, которой я являюсь использование при создании Employee

 public void addHiredEmployee() {
    Scanner kb = new Scanner(System.in);


    System.out.println("Enter Name: ");
    String nameEmployee = kb.nextLine();

    //Creating Id for the employee by getting the last employee in the list 
    //getting their Id and adding 1 to it 
    Employee lastEmployee = listEmployee.get(listEmployee.size() -1);

    int idCreation = lastEmployee.getEmployeeId();
    int employeeID = idCreation + 1;

    System.out.println("Enter password");
    String employeePassword = kb.nextLine();

    System.out.println("Your log-in Id is: " + employeeID);

    Employee employeeHired = new Employee(nameEmployee, employeeID, 
    employeePassword);

    listEmployee.add(employeeHired);

    kb.close();

    listEmployee.toString();
}

Я знаю об использовании UUID, но поскольку для входа в систему будет использоваться Employee Id, я не могу ожидать, что кто-то введет полный UUID.

Is Есть простой способ создания случайного идентификатора или даже я могу использовать последние 4 символа UUID только для входа в систему и как я могу реализовать выбор последних 4 символов?

Ответы [ 3 ]

5 голосов
/ 29 января 2020

Это зависит от того, для чего вам нужен идентификатор. Технические идентификаторы должны быть уникальными в течение всего срока службы вашей системы. Для баз данных это, как правило, числа с автоприращением c. Вместо того, чтобы считать, они хранят последний использованный идентификатор и увеличивают его.

Для входа в систему et c. Вы хотели бы использовать что-то еще, например, имя пользователя. Обычно это называется функциональным идентификатором или бизнес-идентификатором. Это все еще уникально, но требования менее строги. Например, его можно использовать повторно.

UUID - это хорошая идея, если вам нужно создать свои идентификаторы в высокопараллельной среде. Хотя они могут быть сгенерированы параллельно без синхронизации, у них есть и другие недостатки, такие как сложность индексации, длина и, следовательно, требования к хранилищу и т. Д. c.

0 голосов
/ 29 января 2020

Лучший способ создать случайный идентификатор для каждого сотрудника - использовать UUID.

класс, представляющий неизменный универсальный уникальный идентификатор (UUID). UUID представляет 128-битное значение. Существуют разные варианты этих глобальных идентификаторов. Методы этого класса предназначены для манипулирования вариантом Лича-Зальца, хотя конструкторы допускают создание любого варианта UUID (описано ниже). Существует четыре различных типа UUID базового c: на основе времени, безопасности DCE, на основе имени и случайно сгенерированных UUID. Эти типы имеют значения версии 1, 2, 3 и 4 соответственно.

Используется для создания идентификатора сеанса в веб-приложении. Он также используется для создания идентификатора транзакции. Расширяет класс Object. Он реализует интерфейсы Serializable и Comparable.

Теперь давайте go к реализации: -

используем java .util.UUID пакет

UUID uniqId = UUID.randomUUID(); 

каждый раз, когда вы ' Я буду использовать его, и вы получите случайный идентификатор для вашего сотрудника.

0 голосов
/ 29 января 2020

Обычно ID не видимый аргумент. Простой способ, если вы используете идентификатор на основе даты и времени. Пример:

long id = System.currentTimeMillis();
...