我使用UUID隨機數作爲對象的主鍵,當我在數據庫中保存對象。所以這個生成的UUID號碼應該是唯一的。這樣我得到了隨機數。UUID隨機數的產生
final String UUIDUserToken = UUID.randomUUID().toString()
這能產生獨特的任意生成的數字是多少?
給我點子吧。
我使用UUID隨機數作爲對象的主鍵,當我在數據庫中保存對象。所以這個生成的UUID號碼應該是唯一的。這樣我得到了隨機數。UUID隨機數的產生
final String UUIDUserToken = UUID.randomUUID().toString()
這能產生獨特的任意生成的數字是多少?
給我點子吧。
它可以重複(用很少的可能性),
更新:
try{
//try inserting
}catch(){
//SQL constraint fails
// regenerate new UUID
//check in DB before inserting
//insert now, if its unique, else regenerate
}
獲取重複的UUID的概率非常小,只要處理錯誤,當你得到它(再生UUID)。不需要每次都檢查數據庫 – 2012-08-13 08:42:06
同意 - 只要讓數據庫約束在發生時就能捕獲它。 – 2012-08-13 08:42:38
@AviramSegal如果你不檢查數據庫,你怎麼知道它的重複?你是說你應該假設它不會重複和處理它,如果它有? – 2012-08-13 08:43:53
生成的ID是獨一無二的高清世界各地。 順便說一句,爲什麼你在java代碼中生成主鍵?數據庫知道很好地完成這項工作。只需將該字段定義爲AUTO INCREMENT
。
提供的ID例如是提高JPA性能的常用技術。當您需要唯一的ID不符合爲自動生成的鍵實施的增量模式時,它也會有所幫助 - 典型的用例是同步獨立的數據源。 – ChriWeis 2012-08-13 09:00:26
請參閱:http://stackoverflow.com/questions/2513573/how-good-is-javas-uuid-randomuuid – markus 2012-08-13 08:42:13