Hibernate框架之主键的生成策略

在 Hibernate 框架中,要求所操作的对象必须要提供主键。主键是一个没有任何意义的唯一性标识,在 Hibernate 中的主键其实就是映射文件 class 标签下的 id 标签对应的那一列。主键的生成策略就是 generator 中 class 对应的值,主键有数字型和字符串型两种。

一、数字型主键的生成策略

  1. identify(自增)
    适用于 MySql、Sql Server、DB2 等数据库,是属于线程安全的,不连续的(也就是说,如果最后一条数据删掉了,那么下一个新增的数据的主键是删除掉数据主键 +1,所以在表中可以看到主键不是连续的。)
  2. increment(自增)
    实现原理是:每次新增的时候,都取数据库中当前最大的主键 id 值,加1,然后作为当前对象的主键 id,所以它是连续的,但是是线程不安全的,所以只适合单线程操作。
  3. sequence(序列)
    适用于 Oracle、DB2 等大型数据库,和 identify 相似,也是线程安全的。
  4. native(原生的)
    主键由数据库自动生成,程序不加干涉。

二、字符串型主键的生成策略

  1. uuid
    作为字符串型主键的代表
  2. uuid2
    这个是 Hibernate 特有的,Hibernate 对 uuid 进行二次封装后产生的结果。
  3. quid
    其表现形式和 uuid 很像,主要用于 Sql Server 和 Mysql 数据库。
  4. foreign
    主要用于 Hibernate 中配置一对一关系映射的时候。
    foreign的用法
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值