在配置实体类和数据库之间的映射时,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