【hibernate学习】 Hibernate主键生成策略

主键类分类

1、自然主键:

使用表本身的一个字段作为主键

例如:person的IDcard身份证号,IDcard本身属于person实体的一个属性。

2、代理主键

主键本身并不是表中的一个字段,也就是说不是实体的一个属性。

例如:person 的PID, ID等, pid和id 都不是person实体的一个属性。

在实际开发中尽量使用代理主键

在实际开发中一般不允许用户来设置主键,Hibernate提供了多主键生成策略。

 

(1)increment 使用hibernate的主键自增长策略,没有使用数据库的自增长,每次在插入之前都会执行去查询当前最大ID,然后+1,作为新插入记录的主键,在数据库集群下不要使用,适用与单线程程序。

(2)identity 使用数据库底层的自动增长,适用于数据库支持自增长的,例如MySql的自动增长,但是注意Oricle数据库没有自增长策略

(3)sequence 使用序列的实现ID生成策略,需要底层数据库支持,主要用于有序列的数据库。例如:Oracle,DB2。

(4)uuid 与java的uuid很相似,生成随机唯一字符串,主键必须是字符串类型。

(5)assigned 由程序来指定主键

(6)native 根据底层数据库自动选择identity 或者sequence

注:字符串主键是没有字增长的

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值