前段时间经理让使用UUID设置为主键,UUID可以自动生成一个36字符组成的字符串,UUID是由10个阿拉伯数字加上26个字母组成,8-4-4-4-12的形式组成,例如:4c47cf4a-a55a-4fce-8cd9-024a790714b010。由此可见UUID会产生无数种的组合,不用担心会产生重复。
产生UUID的方法也很简单:
String uuid=UUID.randomUUID().toString();
那使用UUID自动生成主键有什么好处呢?平时常用到自动生成主键的方式就是序列,在Oracle中写一个序列,将触发器写在Oracle中或者写在Java代码中,这样就有一个问题,当需要迁移数据库的时候,容易将序列遗忘使得程序无法运行。
有些人会选择复合主键,或者用业务的某个信息作为主键。早期的数据库设计,大多都是用业务信息做主键,在实践中吃了很多亏后,大家更认同用业务无关的字段来做主键。比如用订单编号来做主键,开始大家觉得订单编号应该是唯一的编号。随着业务的变化,客户在使用中提出,订单可以作废,但是该记录不能删除,而且需要新建一个具有相同订单编号的订单,麻烦来了。
综上所述,用UUID作为主键有他的优越性:
1、操作产生简单;
2、维护简单;
3、不会产生重复值;
4、使得主键与业务分离开来。
分享到:
相关推荐
Hibernate用UUID作为主键的Demo,采用Java默认的方法,来生成对应的ID后,存储到数据库中
主要介绍了java获取UUID与UUID的校验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
公司实际项目中采用UUID算法生成主键的工具类,有需要的朋友们可以拿去
使用PostgreSQL将这个gem添加到Rails应用程序中会自动启用UUID主键。 用法 将此宝石添加到您的Rails应用程序中。 安装 将此行添加到应用程序的Gemfile中: gem 'upknit' 然后执行: $ bundle 内部构造 这个gem做...
使用Java的Util.UUID生成32位的有序与无序id
mycat 主键自增代码
主要给大家介绍了关于spring boot整合mybatis利用Mysql实现主键UUID的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
前言:在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?...
Laravel开发-eloquent-uuid Laravel雄辩模型的UUID主键
在Laravel中使用UUID或Ulid作为可选键或主键。 composer require riipandi/laravel-optikey 该软件包添加了一个非常简单的特征,可以为您的模型自动生成UUID或Ulid。 快速开始 更新您的架构 首先,您需要在迁移中...
PB生成UUID
利用UUID生成完全不重复的数字 package com.example.uuid; import java.util.UUID; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View....
主要介绍了浅谈JAVA如何生成UUID唯一标识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
手机UUID!
Math.uuid.js js 生成 uuid
UUID生成工具类
GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复
联想ThinkPad System UUID添加工具,直接支持U盘启动盘制作
UUID 由RFC4122文档定义,里面有实现,不过需要加上SHA1算法,MD5算法才完整。我整理了SHA1 MD5算法,实现了一个可直接使用的UUID的生成算法。