这里列举一些在Hibernate配置文件中的主要的主键生成方式各自特点
:<generator class=”XXX”>
Increment:
与底层数据库无关,大部分数据库都支持,但当遇到并发操作时会发生主键重复的冲突。
Identity:
与底层数据库有关,所以不便于不同数据库之间的移植,但避免了
Increment
并发操作的问题。
Native
:
便于不同数据库移植,由
Hibernate
根据不同数据库选择主键的生成方式,另外如果用到多个数据库时,推荐使用!
Assigned:
主键生成的值完全由用户决定
,
与底层数据库无关
,
所以用户需要维护主键值
Hilo
:
需要额外数据库表的支持,只能保证在同一个数据库中主键的唯一性。
Seqhilo
:
与
Hilo
类似。
Sequence
:
需要数据库的支持,并且在移植到不同数据库时,需要修改配置文件。
UUID
:
能保证主键值的唯一性,但占用比较多的存储空间。