java - 使用 UUID 作为业务键和 equals/hashmethod

标签 java uuid

我正在开发一个新应用程序,我需要一些关于如何实现 equals 方法和 hashCode 方法的帮助。我一直在阅读这里已经提出的关于 SO 的许多问题,并且我还阅读了几篇让我想到这个问题的博客文章。

首先是一些技术信息:我正在使用 JPA (EclipseLink) 并且该应用程序适用于 Java EE。

根据我的阅读,您应该为 hashCode 和 equals 使用不可变值,但由于类中的字段通常是可修改的,因此您不能使用它们。您也不能使用主键 (JPA),因为在保留主键之前您不会拥有它。所以我考虑的是使用UUID。对于 equals 和 hashCode,但我以前从未这样做过,所以我想知道是否有人认为这不好(为什么?)和可能的缺点(除了获得相同 ID 的极小机会)?使用 UUID 并在构造函数中分配它将从一开始就为所有对象提供业务 ID。我将使它不可变并将其保存到数据库中。

这种方法不好吗?

最佳答案

IMO UUID 可以正常工作,我建议这样做。

我找不到这种方法的任何缺点,因为达到 2 个相同值的可能性是无限小的。

关于java - 使用 UUID 作为业务键和 equals/hashmethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12352023/

相关文章:

c++ - uuid_t 的现有哈希函数

java - 着手创建 1x4 KeyBrick 游戏

java - 我如何用抽象类设计这些

java - 无法在 java 应用程序中编写 h2 数据库中的脚本文件

mysql - 主键 UUID 触发器

ios - UUID 和最基本的级别是否只是一串唯一字符?

java - 如何在 Java 中创建用户友好的唯一 ID、UUID 或其他唯一标识符

java - 使用 XMLEncoder 序列化 UUID

java - 如何在Hibernate中实现这个查询?

java - Linux 中 USB 串行端口发生意外变化