在配置實體類和數據庫之間的映射時,hibernate提供了多種主鍵生成策略

雖然很全面,但是常用的確是個別,一般來說,很少會把策略直接寫為increment或者sequence,常見為native,可理解為數據庫原生自增策略,根據數據庫的不同而不同
以一個hbm配置文件為例
1 <?xml version="1.0"?>
2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
4 <hibernate-mapping>
5 <class name="domain.Student" table="STUDENT">
6 <id name="id" type="int">
7 <column name="ID" />
8 <!-- assigned是不指定,需要開發者手動指定 -->
9 <!-- native是當前數據庫的自增長策略 -->
10 <!-- uuid是會生成不重復的字符串 -->
11 <!-- 一般來說,一個系統,記錄的查詢次數肯定要大于記錄的新增次數。所以主鍵生成策略選擇native
12 ,自增長查詢比uuid要快,因為uuid是字符,但是自增長在每次新增前需要查詢最大的ID,所以較
13 uuid而言,新增效率略低
14 -->
15 <generator class="native" />
16 </id>
17 <property name="name" type="java.lang.String">
18 <column name="NAME" />
19 </property>
20 <property name="grade" type="java.lang.String">
21 <column name="GRADE" />
22 </property>
23 </class>
24 </hibernate-mapping>
25