Hibernate常用的8种主键增长策略
Generator为每个 POJO 的实例提供唯一标识。
class 表示采用由生成器接口org.hibernate.id.IdentifierGenerator实现的某个实例,其中包括:
- “increment”主键类型:数值型。每次增长1,适用所有数据库,但不能在集群下使用。
- “identity”主键类型:数值型。采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL 中的主键生成机制。
- “sequence”主键类型:数值型。采用数据库提供的 sequence 机制生成主键。如 Oralce 中的Sequence。
- “native”主键类型:数值型。由Hibernate根据使用的数据库自行判断采用 identity、hilo、sequence 其中一种作为主键生成方式。
- “hilo”通过high/low 算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。
- “uuid”主键类型:字串型。根据UUID算法,生产128-bit的字符串
- “assigned”主键由外部程序负责生成,在 save() 之前由用户指定一个。
- “foreign”使用另外一个相关联的对象的标识符作为主键。通常和<one-to-one>联合起来使用。
建议使用:
针对Oracle数据库:
主键是数值型时,建议使用sequence;主键是字串型时,建议使用uuid或者assigned。
针对Mysql数据库:
主键是数值型时,建议使用increment或者assigned;主键是字串型时,建议使用uuid或者assigned。
针对Sql Server数据库:
主键是数值型时,建议使用identity或者native或者assigned;主键是字串型时,建议使用uuid或者assigned。
相关推荐
manbucy 2010-05-03
周公周金桥 2020-09-06
大象从不倒下 2020-07-31
AlisaClass 2020-07-19
MaureenChen 2020-04-21
xingguanghai 2020-03-13
teresalxm 2020-02-18
木四小哥 2013-05-14
SoShellon 2013-06-01
Simagle 2013-05-31
羽化大刀Chrome 2013-05-31
waterv 2020-01-08
LutosX 2013-07-29
vanturman 2013-06-27
wutongyuq 2013-04-12
luoqu 2013-04-10
zjuwangleicn 2020-09-04