Hibernate主键生成方式
Hibernate负责管理主键值。
Hibernate提供了多种主键生成方式。
主要有以下几种:
a.sequence
可以按指定序列生成主键值。只适用于支持序列的数据库,如Oracle。
<generator class="sequence">
<param name="sequence">
序列名</param>
</generator>
b.identity
按数据库自动增长机制生成主键值。一般用于Mysql、SQLServer数据库。
<generator class="identity">
</generator>
c.native
Hibernate会根据方言类型不同,选择不同的主键生成方式。
<generator class="native">
</generator>
d.assinged
Hibernate会放弃主键生成,采用此方法,需要在程序中指定主键值。
<generator class="assinged">
</generator>
e.increment
Hibernate先执行select max(id)...语句获取主键最大值,然后加1操作,然后再调用insert语句插入。并发量大的时候不建议用。
<generator class="increment">
</generator>
f.uuid/hilo
uuid指的是按UUID算法生成一个主键值(字符串类型)。hilo指的是按高地位算法生成一个主键值(数值类型)。
<generator class="hilo">
</generator>