hibernate产生主键的方法

主键产生器 说明
Assigned 主键由外部程序负责生成,无须Hibernate参与
hilo 通过hilo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史
seqhilo

与hilo类似,通过hilo算法实现的主键生成机制,只是将主键历史状态保存在Sequence中,

适用于支持Sequence的数据库,如Oracle

increment 主键按数值顺序递增,此方法的实现机制为在当前应用实例中的维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键,这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同实例可能生成相同的主键,从而造成主键重复异常, 因此,如果同一数据库中有多个实例访问,此方式必须避免适用。
identity 采用数据库提供的主键生成机制,如DB2,SQL SERVER, MYSQL中的主键生成机制
sequence 采用数据库提供的Sequence机制生成主键,如Oracle中的Sequence
native 由Hibernate根据底层数据库自行判断采用identity,hilo, sequence其中一种作为主键生成机制
uuid.hex 由Hibernate基于128位唯一值产生算法生成十六进制数值,(编码后以长度为32的字符串表示)作为主键
uuid.string 与uuid.hex类似,只是生成 的主键未进行编码(长度16)。在某些数据库中可能出现问题,如PostgreSQL
foreign 使用外部表的字段作为主键

你可能感兴趣的:(oracle,mysql,Hibernate,算法,db2)