2012-08-13 204 views
1

我使用UUID隨機數作爲對象的主鍵,當我在數據庫中保存對象。所以這個生成的UUID號碼應該是唯一的。這樣我得到了隨機數。UUID隨機數的產生


final String UUIDUserToken = UUID.randomUUID().toString() 

這能產生獨特的任意生成的數字是多少?

給我點子吧。

+0

請參閱:http://stackoverflow.com/questions/2513573/how-good-is-javas-uuid-randomuuid – markus 2012-08-13 08:42:13

回答

4

它可以重複(用很少的可能性),

更新:

try{ 
    //try inserting 
}catch(){ 
    //SQL constraint fails 
    // regenerate new UUID 
    //check in DB before inserting 
    //insert now, if its unique, else regenerate 
} 
+4

獲取重複的UUID的概率非常小,只要處理錯誤,當你得到它(再生UUID)。不需要每次都檢查數據庫 – 2012-08-13 08:42:06

+1

同意 - 只要讓數據庫約束在發生時就能捕獲它。 – 2012-08-13 08:42:38

+0

@AviramSegal如果你不檢查數據庫,你怎麼知道它的重複?你是說你應該假設它不會重複和處理它,如果它有? – 2012-08-13 08:43:53

0

生成的ID是獨一無二的高清世界各地。 順便說一句,爲什麼你在java代碼中生成主鍵?數據庫知道很好地完成這項工作。只需將該字段定義爲AUTO INCREMENT

+1

提供的ID例如是提高JPA性能的常​​用技術。當您需要唯一的ID不符合爲自動生成的鍵實施的增量模式時,它也會有所幫助 - 典型的用例是同步獨立的數據源。 – ChriWeis 2012-08-13 09:00:26