做群集时,Hibernate 产生主键的问题?

Sunny319 2007-04-17 11:48:51
我们现在的Hibernate产生主键是increment,以前在一台机器上跑应用没有问题!
现在我们需要做群集,好像再用increment产生主键时候就会像一个数据库上,跑多个应用时,会产生重复主键,请问有相关经验的兄弟说说看怎么解决这个问题.谢谢!
...全文
516 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sunny319 2007-04-17
  • 打赏
  • 举报
回复
感觉改成GUID很麻烦,而且其他表有外键关联时候很麻烦.准备把数据库ID的字段改成serial,然后在hibernate 产生主键方式改成native,不知道行不行,准备测试一下.
greatzheng 2007-04-17
  • 打赏
  • 举报
回复
好贴,学习。。。
ruanjiantaotao 2007-04-17
  • 打赏
  • 举报
回复
uuid,对,会根据及其的marc地址和当时的时间生成全球唯一的id,128位
kevinliuu 2007-04-17
  • 打赏
  • 举报
回复
如果使用Guid,你的数据库设计要改

/////
GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。

  UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID

  import java.util.UUID;
  public class Test {
   public static void main(String[] args) {
    UUID uuid = UUID.randomUUID();
    System.out.println (uuid);
   }
  }

  编译运行输出:07ca3dec-b674-41d0-af9e-9c37583b08bb

Sunny319 2007-04-17
  • 打赏
  • 举报
回复
谢谢大家的回复;
现在我们的数据库字段是这样设计的
ID:decimal(19,0);
现在马上准备上线,时间很近,群集也是刚刚提出来的,我们想在短时间在对程序改变较小情况下做.
kevinliuu你说用GUID,我以前没有用过,刚才在网上看了一点资料.觉得还是不是很明白,可以具体讲下吗?
zxm_dgcstars 2007-04-17
  • 打赏
  • 举报
回复
uuid.hex生成主键是32位
zxm_dgcstars 2007-04-17
  • 打赏
  • 举报
回复
用uuid.hex看行不行
kevinliuu 2007-04-17
  • 打赏
  • 举报
回复
用GUID生成,不要Hibernate自己生成
Sunny319 2007-04-17
  • 打赏
  • 举报
回复
数据库我们使用的是informix.现在的前提是使用Hibernate.怎么避免产生重复主键的问题啊
兄弟们来看看啊
gameboy999 2007-04-17
  • 打赏
  • 举报
回复
用数据库方的方法产生id,例如oracle的sequence对象,肯定不会重复

81,092

社区成员

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

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