oracle随机生成ID并在Java中高效持久化
我需要生成一个长度为12的数字,比如变量finalId。 在这12位数字中,有5位来自另一个值,比如partialid1
现在finalId=partialId1(5位)+partialId2(7位)
我需要随机生成partialid2,在这里我可以使用Java的随机类
最后,我必须将这个finalId作为主键插入数据库
所以,为了确保新生成的finalId不存在于Oracle数据库中,我还需要查询Oracle数据库
除了我上面提到的方法之外,还有其他有效的方法可以在Java中生成Id并在持久化之前签入数据库吗
# 1 楼答案
我更喜欢Java UUID
您可以使用下面的代码使用UUID获得随机id
String id = UUID.randomUUID().toString().substring(0,7); System.out.println("id "+ id);
并且可以将其与其他部分id一起追加,并在DB中具有唯一键或主约束,具体取决于@Erwin建议的存储列
注意:-我们过去做过这么多主键,从来没有发生过id冲突的情况
# 2 楼答案
一般来说,从一个id到另一个id都会有问题,因为你可能会把两个东西聚在一起,这样就更容易分开。具体地说,当您可以只使用两个键时,您可能会试图将外键压缩到主键中
在任何情况下,如果您真的想从存根构建一个半随机主键,那么我建议按位进行,因为这样在SQL和Java中很容易提取原始id
如前所述,如果生成UUID,那么实际上不需要检查它是否已经被使用,否则您可能会想这样做
也就是说,制作身份证的代码可能是这样的:
从本质上讲,这会保留原始文件中的一些最低有效位。调用init时需要指定的号码