Java中的安全ID具有持久性

时间:2013-04-25 09:21:15

标签: java uuid id-generation

我正在准备一个Java库,需要为生成的对象分配唯一的id以进行序列化。 生成唯一ID后,我必须确保下次使用该库时,不可能将id重新分配给我过去已保存的对象。

现在,我发现 Stackoverflow 中的许多人建议依赖于几个选项,即UUIDSecureRandom,但我不确定此类适合我的需求,我不知道如何使用它们。

请问,您是否可以使用正确的实用程序以及如何生成ID?

欢迎基于Guava / Apache实用程序的解决方案。

2 个答案:

答案 0 :(得分:2)

生成重复UUID的概率为pretty low。我不知道不同机器上的2个UUID实例生成相同ID的概率,但是UUID在JVM中应该是唯一的。我不会经历嵌入数据库只是为了生成UUID的麻烦。您可以安全地使用java UUID

替代解决方案

如果您需要跨程序的多个调用使用唯一ID,请使用数据库序列。您可以要求DB缓存序列的下一个N个数,以使其快速合理,并且值将在调用之间保持不变。 UUID使用起来更方便,但两种解决方案都可以使用。如果您使用数据库,您将了解您已序列化的对象数。

答案 1 :(得分:0)

如果你的对象需要一个唯一的数字,那么为什么不做一个序列。您必须编写执行以下操作的自定义类:

  • 这将是一个单身人士
  • 找到启动时对象使用的最后一个值
  • 有一个像getNext这样的方法,它增加了lastValue并返回了该对象使用的值。
  • 使其线程安全。