uuid的设计与使用

发布时间 2023-07-31 21:10:16作者: 四十四次日落95

UUID全称Universal Unique Identifier是一串128位数字码,用于唯一识别网络对象或者事件。

核心思想是结合机器的网卡、当地时间、时间戳,随机数,机器号来生成GUID

 

项目背景:

项目中存在公司基础信息,不同产线的资质信息,合同,银行账号等信息

新增场景,需要有一个sid标识公司,使用pid标识公司下的产线。

仅仅使用自增的主键是不足够的,还要生成一个唯一性标识来区分产线!

 

方法:使用java自带生成uuid生成标识公司和产线的sid和pid

    private String queryUUID() throws SQLException {
//防止并发创建
synchronized (this) { String uuid = UUID.randomUUID().toString(); int count = baseDao.queryWithId(uuid); int switchCount = 0;
//防止出现重复 并且提供5次的重试次数
while (count > 0 || switchCount < 5) { uuid = UUID.randomUUID().toString(); count = baseDao.queryWithId(uuid); switchCount++; } return uuid; } }

新增数据:生成新的uuid

更新数据:当前的uuid是存在的,先删除数据再更新,更新需要同时更新5张表以上!

若写更新语句,那么需要重写5次更新语句,重写较多的更新逻辑,因此采用先删除数据再插入数据!

同时使用注解@Transactional保证事务性,要么全部成功,要么全部失败!