主键生成策略
#2020云栖大会#阿里云海量offer来啦!投简历、赢阿里云限量礼品及阿里云ACA认证免费考试资格!>>>
主键生成策略
主键分类
生成策略
主键可分为自然主键和代理主键
什么是自然主键?
主键本身就是表中的一个字段
实体中一个具体的属性,对象本身唯一的特性
什么是代理主键?
主键本身不是表中必须的一个字段
仅仅是额外的一个参数能够标识不同记录
在实际开发当中一般采用那种主键?
采用代理主键。因为主键是唯一的标识,不方便直接修改,如果主键就是对象的属性比如学生学号作为主键,如果记录时输入错了则不好去修改有悖于开闭原则。采用代理主键对象的所有属性都不是主键,主键由代码自动产生一串唯一的标识,那么所有属性都是普通字段可以方便修改
既然要用代理主键,是属性之外的,所以交给程序自动生成而不是用户输入
一般这个自动生成交给数据库的自动增长来生成唯一标识
在hibernate当中,为了减少程序的编写,内部提供了多种的主键生成策略
| increment自动增加策略(整型) | 查出最大的主键然后给他加1,就是新插入记录的主键,由程序设置不支持多线程 |
| identity自动增长(整型) | 使用是数据库底层的增长策略,由数据库设置 |
| sequence自动增长(整型) | 采用序列的方式 |
| uuid(字符) | 使用hibernate中随机生成字符串的主键 |
| native本地策略 | 在identity和sequence自动切换 |
| assigned |
hibernate不会帮你管理主键自己手动调用或通过程序来去生成主键,通过手动设置 |
mysql自动增长用的是identity,oracle的支持的是sequence。一般使用增长策略用native就好
它,
不仅仅是一个码
本文分享自微信公众号 - IT那个小笔记(qq1839646816)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

浙公网安备 33010602011771号