导航:首页 > 编程语言 > java生成唯一主键

java生成唯一主键

发布时间:2023-04-01 21:25:51

❶ 什么是UUID,java中怎么产生UUID

UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境(Distributed Computing Environment, DCE) 领域的一部分。


UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。


UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。

//如果使用的JDK1.5的话,那么生成UUID变成了一件简单的事,以为JDK实现了UUID:
java.util.UUID,直接调用即可.
UUIDuuid=UUID.randomUUID();
Strings=UUID.randomUUID().toString();//用来生成数据库的主键id非常不错。。

//UUID是由一个十六位的数字组成,表现出来的形式例如
//550E8400-E29B-11D4-A716-446655440000

❷ 使用java.util.UUID生成唯一标识,为什么生成唯一标识的方法有些还需要参数

一个是随机的,一个不是

❸ 做java项目时的主键和外键是什么啊

首先要知道一个概念:主键和外键,是针对数据库而言的,只有数据库中的版表才有主键外键之说。权
主键就是一个表中的唯一索引,用于确定一个表中的一条记录,而外键是引用另外一个表中的主键,在当前表中不见得是唯一的,但是在被引用的表中一般是唯一的。
例如:表1:用户编号(主键),用户名称 ,部门编号(外键)
表2:部门编号(主键),部门名称
那么:对于表1来说,用户编号是主键,部门编号是外键,因为部门编号是引用表2的部门编号字段。
希望搞清楚一些基本概念。

❹ java怎么生成一个唯一的只有数字的订单号

JAVA类库中可以使用UUID方法,来生成唯一的数字的一串数字编号,也就是订单号。
UUID.randomUUID().toString().replaceAll("-", "");通过上述方法专就可以返回一串数字属字符串。

❺ java项目中,用3个id为一个唯一主键,怎么实现

两种方案
第一种方案, 你在添加库存时, 把用户输入作为条件查询一下数据库, 也就是
select count(*) from kucun where proct=** and warese=** and unit=**
查询结果内如果返回值>0, 表示容库中已经有一条这样的记录了, 所以你就弹出提示让用户修改值后再进行插入, 此处可以用AJAX验证
第二种方案, 把数据库的这三个字段设置为联合主键, 插入时不需要验证直接插入, 如果数据相同则会报错
你try/catch一下代码, 在catch里对异常进行判断, 如果是主键异常则提示用户修改数据后插入

推荐第一种

❻ JAVA JDK提供的一个自动生成主键 UUID.randomUUID()的方法 它永远都不会重复嘛

关于复是否重复,首先要说一下uuid生成制的原理
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的
UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
通过组成可以看出,首先每台机器的mac地址是不一样的,那么如果出现重复,可能是同一时间下生成的id可能相同,不会存在不同时间内生成重复的数据
至于说同一时间产生重复的数据,就目前来说,是不会的除非极高的高并发(如果发生了,也可以通过原子性操作避免),
所以基本上就认为不会重复好了

❼ java写代码解决主外健的问题呢

java写代码解决主外健的问题,
1、主键:
若某一个属性组(注意是组)能唯一标识一条记录,该属性组就是一个主键。主键不能重复,且只能有一个,也不允许为空。定义主键主要是为了维护关系数据库的完整性。
2、外键:
外键用于与另一张表的关联,是能确定另一张表记录的字段。外键是另一个表的主键,可以重复,可以有多个,也可以是空值。定义外键主要是为了保持数据的一致性。
3、索引:
索引是对表中一个或多个列的值进行排序的结构。
1) 应该创建索引的列的特点:
①在经常需要搜索的列上创建索引,可以加快搜索的速度;
②在作为主键的列上创建索引,强制该列的唯一性;
③在经常用在连接的列上创建索引,主要是一些外键,可以加快连接的速度;
④在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;在经常需要排序的列上创建索引,因为索引已经排序,可以利用索引的排序加快查询;
⑤在经常使用在WHERE子句中的列上创建索引,加快条件的判断速度。
2) 不应该创建索引的列的特点:
①在查询中很少使用的列上不应该创建索引,因为这些列很少使用到,因此有索引或无索引,并不能提高查询速度,相反由于增加了索引,反而降低了系统维护速度,增大了空间需求;
②在只有很少数据值的列上不应该创建索引,很少数据值的列如性别等,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大,增加索引,并不能明显加快检索速度;
③当修改性能远远大于检索性能时,不应该创建索引,因为改性能和检索性能是互相矛盾的,当增加索引时,会提高检索性能,但会降低修改性能,当减少索引时,会提高修改性能,但会降低检索性能。因此,当修改性能远大于检索性能时,不应该创建索引。
3) 可以在数据库设计器中创建三种索引:
①唯一索引:
不允许其中任何两行具有相同索引值的索引。
②主键索引:
表的某一列或列组合,其值唯一标识表中的每一行,该列或列组合称为表的主键。为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。
③聚集索引:
聚集索引:聚集索引表示表中存储的数据按照索引的顺序存储。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。
聚集索引实例:字典默认按字母顺序排序,如知道某个字的读音可根据字母顺序快速定位。
非聚集索引:非聚集索引表示数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置,需要查询两个地方才能查找到数据。一个表可以包含多个非聚集索引,可以为查找数据时常用的每个列创建一个非聚集索引。
非聚集索引实例:如需查询某个生僻字,则需按字典前面的索引,如按偏旁进行定位,找到该字对应的页数,再打开对应页数找到该字。
与非聚集索引相比,聚集索引通常提供更快的数据访问速度,但对数据更新影响较大。
4)索引的优点:
加快对数据的检索。
5)索引的缺点:
①减慢数据录入的速度;
②增加了数据库的尺寸大小。
4、主键和外键的关系:
外键是另一个表的主键,主键是可以被外键有效引用的对象。若A表中的一个字段,是B表的主键,则它可以是A表的外键。

❽ 在java中 主键生成策略(hibernate)都是指的是id的吗

主键生成策略是指 <grnerator class="native"/>

1、 native
对于 oracle 采用 Sequence 方式,对于MySQL 和 SQL Server 采用identity(自增主键生成机制),native就是将主键的生成工作交由数据库完成,hibernate不管(很常用)

2、assigned
在插入数据的时候主键由用户自己添加,hibernate也不管(很常用)

3、increment
插入数据的时候hibernate会给主键添加一个自增的主键,但是一个hibernate实例就维护一个计数器,所以在多个实例运行的时候不能使用这个方法

4、sequence
调用数据库的sequence来生成主键,要设定序列名,不然hibernate无法找到:
<param name="sequence">NAME_SEQ</param>(Oracle中很常用)

5、identity
使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用)

6、hilo
使用hilo生成策略,要在数据库中建立一张额外的表,默认表名为hibernate_unique_key,默认字段为integer类型,名称是next_hi(比较少用)
我们也可以自己设置自定义的表名和字段名
<id name="id" type="integer">
<column name="id"/>
<generator class="hilo">
<param name="my_unique_key"/>
<param column="next_hi"/>
</generator>
</id>

7、sehilo
通过hilo算法实现,但是主键历史保存在Sequence中,适用于支持 Sequence 的数据库,如 Oracle(比较少用)

8、uuid.hex
hibernate会算出一个128位的唯一值插入

9、uuid.string
hibernate会算出一个16位的值插入

10、foreign
使用外部表的字段作为主键

11、select
使用触发器生成主键(主要用于早期的数据库主键生成机制,少用)

❾ 关于主键 生成策略:UUID.randomUUID().toString().replaceAll("-", "");

UUID.randomUUID().toString()是java JDK提供的一个自动生成主键的方法。UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有空逗机器都是唯搏搜一的,是由一个十六位基亏历的数字组成,表现出来的形式。每张表都可通过这种方式来生成主键,所以你的B表同样可以这样做。

阅读全文

与java生成唯一主键相关的资料

热点内容
手机文件管理的图片 浏览:593
系统更新准备工具网页 浏览:29
iphone4充电图标 浏览:841
能源大数据分析 浏览:803
长沙网络技术培训机构 浏览:673
三大数据库简介 浏览:343
学编程有哪些好的软件 浏览:168
西门子s7300编程电缆哪个好用 浏览:197
jsp中script标签 浏览:483
linuxdns测试工具 浏览:19
学生用什么编程 浏览:27
苹果怎么看缓存的文件在哪里 浏览:785
用光盘引导linux系统安装教程 浏览:956
ps如何将元素复制到另外一个文件 浏览:651
win10删除文件怎么用管理员权限 浏览:941
qq监控文件删除 浏览:58
java设置下载文件的名字 浏览:48
iphone6屏幕出现平行竖条纹 浏览:741
教育大数据应用典型示范项目 浏览:934
有什么好的消化内科科普网站 浏览:504

友情链接