Hibernate主鍵生成策略

在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開始的整數。     Xml代碼  1.<id name="實體類屬性名" type="java.lang.Integer">    2.      <column name="對應表中主鍵字段名" />    3.      <generator class="assiged|increment|identity|native|........" />    4.</id>    <id name="實體類屬性名" type="java.lang.Integer">        <column name="對應表中主鍵字段名" />        <generator class="assiged|increment|identity|native|........" />  </id>  採用hibernate的主鍵生成策略,就能夠比較靈活和方便的對錶中的主鍵字段進行操做了。並且,不一樣的數據庫,不一樣的主鍵形式,也只須要修改下映射文件就能夠了
相關文章
相關標籤/搜索