数据库主键生成策略

1.increment

可以生成long、int、short类型的主键,由hibernate在内存中生成主键,每次增量为1,不依赖于底层数据库,但是因为是由hibernate生成的,所以只能有一个hibernate进程访问数据库,否则就会产生主键冲突,所以不能在集群的情况下使用;

2.identity

可以生成long、int、short类型的主键,是由数据库自己生成的,这个主键必须设置为自增长,因此使用identity的前提是数据库支持自增长,oracle是不支持的;

3.sequence

采用数据库提供的sequence机制生成主键,需要数据库支持sequence,mysql是不支持的;

4.hilo

使用一个高低位算法生成的long、short、int类型的标识符,跨数据库;

5.native

根据底层数据库的能力选择identity、sequence或hilo中的一个,当项目中用到多个数据库时可以使用这种方式,使用时需要设置表的自增字段或建立序列,建立表等;

6.uuid

hibernate采用128位的uuid算法来生成主键,能够在网络环境中生成唯一的一个32位16进制数字的字符串,跨数据库,不用访问数据库就能生成主键,所以效率高且能保证唯一性,移植非常方便;

7.assigned

与hibernate和底层数据库均无关,人为控制主键的生成,应尽量避免;

8.foreign

使用另外一个相关联的对象的标识符,大多用在一对一关系中;


代理主键:与业务无关且能唯一标识数据库中记录,一般由数据库自动生成,除assigned之外的所有主键生成策略;

自然主键:与业务相关,由用户指定,且能唯一标识数据库中的任意一条记录,如assigned;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值