Hibernate自定义主键生成策略

在没使用hibernate注解式之前,我们是需要创建hbm.xml的这样一个用于映射的配置文件,而我们的主键生成的方式则需要在这个xml的文件内区定义。

黄色框框内就是我们主键生成的多种方式

1. <generator class="cok.zking.hibernate03.generator.mygenerator" />

这个是我们的一个自定义的一个主键生成,它可以设置我们想要的格式作为数据库中的主键,自定义主键的话,需要去实现org.hibernate.id.IdentifierGenerator这个接口,然后返回的数据就是我们的主键,例如这个根据数据库读取来自定义主键生成器:

2.<generator class="uuid"></generator>

是指一台机器上生成的数字,它保证同一时空的机器都是唯一的,它用到了以太网址,芯片ID,纳秒级时间,等许多可能的数字,它的格式是xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx(8-4-4-4-12)。

3. <generator class="assigned"></generator>

主键由外部程序生成,和hibernate与底层数据库无关,可以跨数据库,在储存数据之前必须使用主键的setter方法给主键赋值,怎么生成,由自己决定,此方法尽量不用。

4.<generator class="identity"></generator>

由底层数据库自动生成,数据库中的主键必须设置成自动增长列,oracle无自动增长列,所以不支持跨Oracle数据库

5.<generator class="increment"></generator>

由hibernate从数据库中取出最大主键值,在这个基础上每次增量为1,在内存中生成主键,支持跨数据库

6.<generator class="sequence"></generator>

序列,由数据库自动生成sequence,Mysql数据库不支持,Oracle,DB等数据库支持

7.  <generator class="guid"></generator>

也成为uuid,结合机器网卡和当地时间以及一个随机数生成的一组128位长的数字,用16进制表示

8.<generator class="native"></generator>

由hibernate根据使用的数据库来判断是使用identity还是使用sequence以及hilo的主键生成方式,灵活性很强

猜你喜欢

转载自blog.csdn.net/Mr_xiayijie/article/details/82431111
今日推荐