第八章 ID主键生成策略

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: <p><strong><span style="color:red">increment </span></strong></p> <p><strong><span style="color:red">(选查找数据库中的主键生成,然后再把对象</span><span style="color:red">insert</span><span style="color:red">进去)</s

increment

(选查找数据库中的主键生成,然后再把对象insert进去)

用于为long, short或者int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。

identity  

(主要用于mysql数据库)

注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。

对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。 (数据库自增)

sequence

(主要用于Oracle)

在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。(数据库自增)

hilo

使用一个高/低位算法高效的生成long, short 或者 int类型的标识符。给定一个表和字段(默认分别是 hibernate_unique_key和next_hi)作为高位值的来源。 高/低位算法生成的标识符只在一个特定的数据库中是唯一的。

seqhilo

使用一个高/低位算法来高效的生成long, short 或者 int类型的标识符,给定一个数据库序列(sequence)的名字。

uuid (字符串)

用一个128-bit的UUID算法生成字符串类型的标识符, 这在一个网络中是唯一的(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串,它的生成是由hibernate生成,一般不会重复。

UUID包含:IP地址,JVM的启动时间(精确到1/4秒),系统时间和一个计数器值(在JVM中唯一)。 在Java代码中不可能获得MAC地址或者内存地址,所以这已经是我们在不使用JNI的前提下的能做的最好实现了

    String uuid = java.util.UUID.randomUUID().toString();

guid

在MS SQL Server 和 MySQL 中使用数据库生成的GUID字符串。

native

跨数据库时使用,由底层方言产生。

根据底层数据库的能力选择identity, sequence 或者hilo中的一个。(数据库自增)

assigned

用户自定义id;

让应用程序在save()之前为对象分配一个标示符。这是 <generator>元素没有指定时的默认生成策略。(如果是手动分配,则需要设置此配置)

select

通过数据库触发器选择一些唯一主键的行并返回主键值来分配一个主键。

foreign

使用另外一个相关联的对象的标识符。通常和<one-to-one>联合起来使用。

 

      复合主键(联合主键):多个字段构成唯一性。
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9月前
|
XML 算法 Java
基于雪花算法解决Mybatis-Plus id主键生成的问题
基于雪花算法解决Mybatis-Plus id主键生成的问题
|
SQL 算法 前端开发
【MybatisPlus】MP解决四种表与实体的映射问题,以及id自增策略
MP解决四种表与实体的映射问题,以及id自增策略
1567 0
【MybatisPlus】MP解决四种表与实体的映射问题,以及id自增策略
|
Java 数据库
如何使用JPA的UUID主键生成策略
这篇文章只写给主键用uuid并且用jpa的小伙伴。 1. 数据实体类 @Entity @Table(name = "ip_user") @GenericGenerator(name = "jpa-uuid", strategy = "uuid") ...
3467 0
|
8月前
|
监控 算法 NoSQL
分布式ID生成策略
分布式ID生成策略
|
XML SQL Java
mybatis开发要点-insert主键ID获取和多参数传递
mybatis开发要点-insert主键ID获取和多参数传递
152 0
|
XML 数据格式
Javaweb学习笔记——schema约束
XML Schema是一种用于定义和描述XML文档结构与内容的模式语言,它的出现克服了DTD的局限性。
147 0
|
算法 NoSQL Oracle
分布式id的生成策略4种方式
分布式id的生成策略4种方式
218 0
分布式id的生成策略4种方式
|
缓存 NoSQL 算法
分布式全局唯一ID生成策略
“唯一ID”在应用程序中是一个很常见的需求,它用于唯一标识一个业务对象、一个资源、或者一个消息等等。在数据库中,唯一ID一般是用来做为一个数据的主键。看过前面介绍MySQL索引原理的文章的朋友应该知道,主键对于数据库的重要性不言而喻。 在单机场景下,要得到一个全局唯一的ID是非常容易的,你可以使用数据库的自增功能。
245 0