hibernate 中mysql的id建置原則

來源:互聯網
上載者:User

標籤:style   http   io   檔案   資料   ar   line   資料庫   

資料庫的規劃和操作號碼大全中,咱們一般會給表建立長尾關鍵詞挖掘工具的主鍵。 

主鍵,可以分為天然主鍵和署理主鍵。 

天然主鍵表明:選用具有事務邏輯意義的欄位作為表的主鍵。比方在使用者資訊表中,選用使用者的社會安全號碼碼作為主鍵。可是這樣一來,跟著事務邏輯的變化,主鍵就有可能要更改。比方,假定哪天社會安全號碼碼升級成19,2位,那。。。。。。。 

署理主鍵:在表中人為的添加一個欄位,該欄位並沒有表明任何的事務邏輯,僅僅用來標識一行資料。比方說在使用者資訊表中,添加一個使用者ID的欄位。用來表明該條使用者資訊的記錄。 

 

一般情況下,用的對比多的是署理主鍵的方法。並且,咱們習氣于于讓該主鍵欄位可以主動增加,來保證其僅有性。可是,不一樣的資料庫主動增加的方法並不是一樣的。如在SQLSERVER中,用identity,MYSQL中,有increment,ORACLE中一般選用sequence。這樣一來,在資料庫的主鍵列操作上,便會顯得對比費事。 

可是在Hibernate中,提供了主鍵產生戰略。下面是對比常用的幾種: 

1:assigned 

----表明在新增資料時由應用程式指定主鍵的值。首要針對主鍵是選用天然主鍵的方法。這種方法,適用於主鍵列不是主動增加列。 

 

其缺陷為在履行新增操作時,需查詢資料庫判別產生的主鍵是否現已存在。 

2:increment 

----表明新增資料操作時由hibernate主動產生主索引值。其產生的值為:先查詢該主鍵列的最大值,然後在最大值的基礎上加上1.適用於選用署理主鍵方法的主鍵列。相同不能用於主鍵列是主動增加的表。可是,該主鍵產生戰略也有些缺陷。 

(1)新增資料前先查詢一遍,影響了功能。 

(2)主鍵的類型只能為數值型的int或者long 

(3)並行作業時的抵觸疑問。 

3:identity 

----不如說是為sqlerver資料庫量身定做的。首要適用於sqlserver資料庫的主動增加列的表。 

4:native 

----表明依據不一樣的資料庫選用不一樣的主鍵產生戰略。比方,當時資料庫為sqlserver,則會選用identity,如為oracle,則選用 

 

 

oracle中的sequence等。區別資料庫的不一樣是以hibernate主設定檔中sessionFactory中配置的資料庫方言。 

 

5.uuid 

 

 

* 僅有主鍵產生方法。從Hibernate中提取出來 

 

長處:避免了產生ID 時,與資料庫的再次交道,功能上較高。但關於有的開發人員不太習氣這種id產生方法,UUID產生的32為的字串,不一樣於identity 從1開端的整數。 

  

 

 

 

選用hibernate的主鍵產生戰略,就可以對比靈敏和方便的對錶中的主鍵欄位進行操作了。並且,不一樣的資料庫,不一樣的主鍵方法,也只需要修改下對應檔就可以了

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.