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