UUID是指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。通常平臺會提供生成UUID的API。UUID按照開放軟件基金會 (OSF)制定的標準計算,用到了以太網卡地址、納秒級時間、芯片ID碼和許多可能的數字。由以下幾部分的組合:當前日期和時間(UUID的第一個部分與時間有關,如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同),時鐘序列,全局唯一的IEEE機器識別號(如果有網卡,從網卡獲得,沒有網卡以其他方式獲得),UUID的唯一缺陷在于生成的結果串會比較長。關于UUID這個標準使用最普遍的是微軟的GUID (Globals Unique Identifiers)。UUID 在所有計算機上都是唯一的。不過,它們的值是完全隨機的,因此不能用來確定添加值的時間或值的順序。另外,UUID 值比其它方法(包括全局自動增量)所需的值大得多,并且在主鍵表和外鍵表中都需要更多的表空間。使用 UUID 建立表索引的效率也更低。標準的UUID格式為:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12)
輸出如下結果:
Hibernate中的使用
UUID algorithmThe UUID contains: IP address, startup time of the JVM (accurate to a quarter second), system time and acounter value (unique within the JVM). It’s not possible to obtain a MAC address or memory address from Javacode, so this is the best we can do without using JNI.