对hibernate的generator的熟悉度不够,想多知道知道。查了查,原来有很多的主键生成器,先大体的了解了解。
increment
主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:不能在集群下使用。
identity
seqhilo
uuid:
对字符串列的数据采用 128-位 uuid 算法生成唯一的字符串主键。
hilo
通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。
foreign
使用外部表的字段作为主键。
native
由Hibernate根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,这种方式我在开法过程中经常用到,意思是把主键的生成方式交给底层数据库来决定。
assigned
主键由外部程序负责生成,无需Hibernate参与。
uuid.hex
由Hibernate基于128 位唯一值产生算法生成16 进制数值(编码后以长度32 的字符串表示)作为主键。
uuid.string
与uuid.hex 类似,只是生成的主键未进行编码(长度16)。在某些数据库中可能出现问题(如PostgreSQL)。
这些我不都是不知道的,现在就先做到知道有这些了呢!