Hibernate之id标签的generator

Hibernate id的generator

1.increment

自增序列,由hibernate维护。初始值为1,只支持int long和short。不适合多线程并发更新数据库,适合单一进程访问数据库。不能用于群集环境

2. identity

与底层数据库有关,要求数据库支持identify,如MySQL中是auto_increment,SQL Server中是Identify.支持的数据库有MySQL,SQL Server,DB2,Sybase和HypersonicSQL.只支持int long和short

3. sequence

需要底层数据库的支持序列,支持序列的数据库有DB2,PostgreSQL,Oracle,SAPDB等。只支持int long和short

4. hilo

通过hilo算法生成主键,要求当前数据库里有表hibernate_unique_key,并且只有一个int类型字段next_hi,必须有一行数据,而且不能更改。能保证同一个数据库中主键的唯一性,但不能保证多个数据库之间主键的唯一性。hilo主键生成方式由Hibernate维护,所以hilo方式与底层数据库无关。但不应该手动修改hi/lo算法使用的表的值,否则会引起主建重复的异常

5. seqhilo

使用方法与hilo方式类似,通过hi/lo算法生成主键,但要求底层数据库支持sequence,如Oracle,DB2

6. uuid

通过一种算法生成string类型32位的主键,保证生成的主键唯一。

生成主键例子: 8acca38b1c3625bf011c3625c2920001

7. guid

一种特殊的算法。支持SQL Server,MySQL. 在使用SQL Server时,表定义中的字段的类型指定为uniqueidentifier

(到现在我还没找到比较好的解释)

8. native

根据不同的底层数据库,采用不同的主键生成方式。如MySQL使用Idetify方式,Oracle使用Sequence方式,项目中如果用到多个数据库时,可以使用native方式

9. assigned

主键由程序自己维护,一个持久类在被save()前必须手动指派一个主键

10. select

retrieves a primary key assigned by a database trigger by selecting the row by some unique key and retrieving the primary key value.

官方文档原文如上,没看明白。以后找到了网上的解释再更新

11. foreign

用于一对一关联映射。

12. sequence-identity

放这吧,什么时候知道什么意思了再写上,估计平时用的极少

相关推荐