hibernate主键生成策略

A.increment

由hibernate自动递增的方式生成标识符,每次增量为1,优点是适用于所有数据库,缺点是在集群环境下可能会出现相同的主键值且OID必须为数值类型

B.identity

由底层数据库自动增长生成标识符,需要数据库支持自动增长,比如sqlserver,mysql支持,且OID必须为数值类型

C.sequence

由底层数据库序列生成标识符,需要数据支持序列,比如oracle支持,且OID必须为数值类型

D.hilo

由hibernate按照一种high/low算法生成标识符,需要从数据中特定表的字段(默认是hibernate_unique_key表的next_hi字段)获取high值(需要在单独的事务中处理,只能保证在一个数据库中唯一),因此需要额外的数据库表保存主键的历史状态,适用于每种数据库但OID必须为数值类型

E.native

由底层数据库根据类型自动选择identity、hilo、sequence中的一种生成标识符,OID必须为数值类型,适合跨数据库平台开发

F.uuid

由hibernate基于128位唯一值产生算法,根据当前设备IP、时间、JVM启动时间、内部自增量等4个参数生成16进制数值作为主键,数据插入性能和数据库平台适应性是最佳的,OID是String类型而不能是数值类型

G.assigned

由应用程序逻辑生成标识符,OID类型没有限制,应避免使用

H.foreign

在one-to-one关系中由另一个表的主键来决定自己的主键/外键







你可能感兴趣的:(Hibernate)