如何保证ID全局唯一性

icelover 2005-09-22 10:59:35
我现在使用JSP+MySQL做一个东西,系统中各个对象都有一个自身的ID,该ID需要保证全局唯一,我刚开始准备使用int型的,但是因为有多张表,在生成一个对象的时候,好像很难保证这个对象的ID是全局唯一的,如果我用单独一张表来保存ID的话,那每次增添一个记录都要去查询这张表,会非常慢,如果我采用128位GUID,感觉对数据库的容量和在编程时不方便
请问各位大侠是如何处理的?
...全文
267 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
medusagjf 2005-09-23
  • 打赏
  • 举报
回复
须导入:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
medusagjf 2005-09-23
  • 打赏
  • 举报
回复
加密方法如下,先将Date类型toString后使用:
public static String createEncryptionCode(String orginalValue){
MessageDigest alga=null;
try{alga = MessageDigest.getInstance(getEncryptionType());
}catch(NoSuchAlgorithmException e){e.printStackTrace();}
alga.update(orginalValue.getBytes());
byte[] digest=alga.digest();
String hs="";
String stmp="";
for (int i=0;i<digest.length;i++){
stmp=(java.lang.Integer.toHexString(digest[i] & 0XFF));
if(stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
}
return hs.toUpperCase();
}
medusagjf 2005-09-23
  • 打赏
  • 举报
回复
IBM是使用new Date().getTime作为原ID,然后用sha1或md5加密后作为id,保证不会重复
navyu 2005-09-22
  • 打赏
  • 举报
回复
用单例类 可以做

主键 从单例类中取得。

在 单例类中要维护一个主键表,如下
CODENAME , NUM
ID1 100
ID2 200
对主键ID1 生成20 个 将NUM更新成 120
这样在单例类 中就有了 101 - 120 20个不同的主键。
用到时就从 单例类池中取,没有在从DB中生成就可。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧