【5】Hibernate的主键生成策略

1、表中主键分类:

(1)自然主键:建表的时候,使用对象中本身的属性作为表的主键。

(2)代理主键:没有使用对象中的自身的属性作为表中的主键,使用和对象不相关的属性作为主键。

注:在建表的时候,建议使用代理主键,自然主键有可能会参与到业务逻辑中,有可能出现重复或者有的时候需要修改,主键不能修改,因此自然主键就不能使用了。

2、主键生成策略

         主键不应该由用户自己输入,而是由程序生成。

(1)increment自动增长,使用的是Hibernate中提供的自动增长机制,适应于short,int,Long。Hibernate底层使用查询一下表中主键的最大值。select  max(cust id ) from customer,然后将id+1作为当前的主键。

                   问题:在集群中不要使用

(2)identity自动增长。使用的是数据库的自动增长机制。使用于有自动增长机制的机器。Oracle没有自动这增长功能。

(3)sequence序列,使用的是序列的方式完成数据库的主键的生成)(Oracle和DB2可以使用)

(4)native本地策略,根据数据库不同自动选择identitysequence

(5)uuid适用于字符串类型的主键,产生一个随机的字符串。

(6)assignedHibernate不管理主键,用户手动设置主键的值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值