在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的主鍵生成策略,就能夠比較靈活和方便的對錶中的主鍵字段進行操做了。並且,不一樣的數據庫,不一樣的主鍵形式,也只須要修改下映射文件就能夠了