一、常用方式
1.常用方式——sequence
-sequence是采用序列方式生成主键,适用于Oracle数据库。
-其配置语法为
<generator class="sequence">
<param name="sequence">序列名</param>
</generator>
2.常用方式——identity
-identity是采用数据库自增长机制生成主键,适用于Oracle之外的其他数据库。
-其配置语法为:
<generator class="identity"></generator>
3.常用方式——native
-native是根据当前配置的数据库方言,自动选择sequence或者identity。
-其配置语法为
<generator class="native">
<param name="sequence">序列名</param>
</generator>
二、其他方式
1.其他方式——increment
-increment不是采用数据库自身的机制来生成主键,而是Hibernate提供的一种生成主键的方式。它会获取当前表中主键的最大值,然后加1作为新的主键。
其配置语法为
<generator class="increment">
</generator>
-注意
这种方式在并必量高时存在问题,可能会生成重复的主键,因此不推荐使用。
2.其他方式——assigned
-assigned是Hibernate不负责生成主键,需要程序员自己处理主键的生成。
-其配置语法为
<generator class="assigned"></generator>
3.其他方式——uuid/hilo
-uuid/hilo是采用uuid或hilo算法生成一个主键值,这个主键值是一个不规则的长数字。
-其配置语法为
<generator class="uuid"></generator>
注意
这种方式生成的主键可以保证不重复,但是没有规律,因此不能按主键排序。