hibernate中uuid和native等主鍵生成策略

hibernate中一個數據模型的主鍵常用有三種形式:uuid、native、assigned,分別是通用唯一標識、自增、自定義。
1、uuid是系統產生的,insert數據庫時相比native要快很多,但是uuid是一長串無序字符串,理論上講查找起來會慢一點,但是不太會影響開發的。而native是數據庫生成,在insert時會先計算所以會比uuid慢一點,但是在查找和刪除數據時,會比較方便。
2、uuid和assigned的生成是在程序中完成的,一個是自動,一個是手動。所以在進行session.save()時,不會產生sql語句,數據庫中也不會有數據。而native需要讀取數據庫數據才能完成自動遞增,所以在執行session.save()時,就會產生相應的sql語句,數據庫中就會有數據。
uuid介紹:
uuid即通用唯一標識,聽這個名字就很霸氣,沒錯。在不知道怎麼定義主鍵時,它是不二的選擇。
1、生成簡單,java中已經有現成的東西(java就是好啊),引入java.util.UUID,例:
UUID uu = UUID.randomUUID();System.out.println(uu);//會打印出什麼天知道。
2、通用唯一,其實可以加上全球,uuid的生成原理:
當前日期和時間(UUID的第一個部分與時間有關,如果你在生成一個UUID之後,過幾秒又生成一個UUID,則第一個部分不同,其餘相同),時鐘序列,全局唯一的IEEE機器識別號(如果有網卡,從網卡獲得,沒有網卡以其他方式獲得),
據說uuid用上千年萬年纔會出現一條重複數據,這意味着在任何時候兩個相同數據表的數據放在一起不會出現主鍵衝突,這在實際開發中會帶來很大的好處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章