increment策略:擷取資料庫中最大ID,並在該基礎上加1作為新id,可以應用於任何資料庫。
格式:<id name="" column="">
<generator class="increment" />
</id>
identity策略:設定表中的ID列為自動成長,可以用於MS SQL Server、MySQL和DB2。
格式:<id name="" column="">
<generator class="identity" />
</id>
sequence策略:使用序列機制產生ID,主要用於Oracle、DB2資料庫。
格式:<id name="" column="">
<generator class="sequence">
<param name="sequence">序列名</param>
</generator>
</id>
hilo策略:成為高低位演算法,產生的屬性值為long、short、int及對應的封裝類,根據演算法產生一個唯一的ID
必須在資料庫中建立一個存放高低位的表,表中有一列名為next_hivalue,並在該表中插入一行資料,該策略適合任何資料庫
格式:<id name="" column="" type="">,type類型必須為:short、int、long或對應的封裝類型
<generator class="hilo">
<param name="table">儲存高位值的表</param>
<param name="column">next_hivalue</param>
</generator>
</id>
seqhilo策略:序列高低位策略,產生的屬性值為long、short、int及對應的封裝類,根據演算法產生一個唯一的ID,與高低位
策略不同的是,不需要單獨建立資料表格儲存體高低位種子,根據序列作為高低位種子,適用於Oracle資料庫。
格式:<id name="" column="">
<generator class="seqhilo">
<param name="sequence">序列名</param>
</generator>
</id>
uuid策略:採用128為UUID演算法產生一個字串類型主索引值。可以用於任何資料庫,ID列必須為字串類型。
格式:<id name="" column="">
<generator class="uuid" />
</id>
guid策略:藉助MS SQL Server和MySQL的GUID字串產生ID標識,ID列為字串類型,只適用於SQL Server和MySQL
格式:<id name="" column="">
<generator class="guid" />
</id>
native策略:自動根據底層資料庫選擇一個合適的ID策略,從identity、sequence、hilo中選擇。
格式:<id name="" column="">
<generator class="native" />
</id>
assigned策略:由Hibernate指定產生的ID,在調用save方法時需要設定PO的ID屬性,盡量避免使用
格式:<id name="" column="">
<generator class="assigned" />
</id>
foreign策略:在一對一映射時使用,用於共用主鍵
格式:<id name="" column="">
<generator class="foreign">
<param name="property">要引用的類</param>
</generator>
</id>