繁体   English   中英

什么是实现 ID 的好方法?

[英]What is a good way of implementing a ID?

我正在为自己构建一个小项目,每次创建Employee ,他们都会获得一个 ID。

此 Id 是通过查找ArrayList.size()生成的。

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

我知道这是一个坏主意,因为在删除员工时,Id 将开始复制。

这是我在创建员工时使用的功能

 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。

有没有一种简单的方法来创建一个随机 Id 或者我什至可以使用 UUID 的最后 4 个字符来进行登录,我该如何实现选择最后 4 个字符?

这取决于您需要 ID 的用途。 通常,技术 ID 在系统的整个生命周期中应该是唯一的。 对于数据库,这些通常是自动递增的数值。 他们不是计算计数,而是存储最后使用的 id 并增加它。

对于登录等,您可能需要使用其他内容,例如用户名。 这通常称为功能 ID 或业务 ID。 它仍然是独一无二的,但要求不那么严格。 例如,它可以重复使用。

如果您需要在高度并行的环境中创建 ID,UUID 是一个好主意。 虽然它们可以在没有同步的情况下并行生成,但它们还有其他缺点,例如难以索引、长度和存储要求等。

为每个员工创建随机 ID 的最佳方法是使用 UUID。

表示不可变的通用唯一标识符 (UUID) 的类。 UUID 表示 128 位值。 这些全局标识符存在不同的变体。 此类的方法用于操作 Leach-Salz 变体,尽管构造函数允许创建 UUID 的任何变体(如下所述)。 有四种不同的基本 UUID 类型:基于时间、DCE 安全性、基于名称和随机生成的 UUID。 这些类型的版本值分别为 1、2、3 和 4。

用于在 Web 应用程序中创建会话 ID。 它还用于创建交易 ID。 它扩展了 Object 类。 它实现了 Serializable 和 Comparable 接口。

现在让我们开始实施:-

使用 java.util.UUID 包

UUID uniqId = UUID.randomUUID(); 

每次您使用它时,您都会为您的员工获得一个随机 ID。

通常 ID 是一个不可见的参数。 简单的方法,如果您使用基于日期时间的 ID。 例子:

long id = System.currentTimeMillis();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM