我有一个系统分析师坚持使用oracle序列而不是UUID,因为他不熟悉它。
我有几个问题,希望社区可以帮助我。
1)如何生成hibernate UUID以确保唯一性?
我知道oracle SYS_GUID()使用
SYS_GUID生成并返回全局唯一标识符(RAW 值)由16个字节组成。在大多数平台上,生成了 标识符由主机标识符,进程或线程组成 调用该函数的进程或线程的标识符,以及 该进程或线程的非重复值(字节序列)
2)在使用UUID的情况下,hibernate会自动重新生成UUID以提交行吗?
我知道这种情况很少见,但如果hibernate可以做到这一点,但他坚持认为有可能会发生并且交易会失败。
3)使用UUID而不是oracle序列生成器有什么好处?
答案 0 :(得分:2)
罕见甚至没有开始描述两次随机生成相同UUID的远程可能性。
如维基百科关于UUID s
的论文所示n次尝试后发生冲突的可能性。
n probability
68,719,476,736 = 2**36 0.0000000000000004 (4 × 10−16)
2,199,023,255,552 = 2**41 0.0000000000004 (4 × 10−13)
70,368,744,177,664 = 2**46 0.0000000004 (4 × 10−10)
您可以以每秒100万的速度生成UUID,持续814天,并且只有4 * 10 ** - 10的机会生成副本。
更不用说Advantages and disadvantages of GUID / UUID database keys
了