百度空间 | 百度首页 
 
查看文章
 
Roller 4源码分析笔记(1)- Hibernate generator options
2007-06-19 15:34
      以前用Hibernate时,PK的generator项一直用的是native,也没想为什么,就是看到书上是这么用的。今天看了看roller的源代码,发现它用的竟然是uuid.hex。上网查了查,大家都说uuid.hex的数据库无关性最好。
     generator的option有很多,用的比较多的有assigned, native, sequence, identity, uuid.hex。assigned是默认选项,顾名思义,这个选项就是table的PK由应用程序提供,不受Hibernate的管理,有些DB-independent的PK产生机制就是利用此选项,这些模式有1)在数据库中建一个表,每行保存一个表当前最大的PK值。2)利用数据库的stored procedure call来产生PK。sequence, identity实际上用的是DB内置的PK产生机制,只不过不同的DB用不同的option罢了,所以一般用native比较好。还有一个increment选项,他的功能和前几个差不多,但是他仅对当前Hibernate程序唯一,故不能用在集群上。uuid.hex是在内存产生的全局唯一的字符串,128bits,表示为16进制后需32个字符,占用空间远大于前面仅需4bytes的int的native等,所以在查询,索引上的效率较差。但由于其完全的数据库无关,所以此选项可提高程序的可移植性

类别:Java | 添加到搜藏 | 浏览() | 评论 (2)
 
最近读者:
 
网友评论:
1
2007-06-20 15:22 | 回复
UUID好象也用在COM接口上吧,是不是和网卡相关产生的数字
 
2
2007-06-21 13:57 | 回复
不知道UUID在COM上是怎么实现的,下面是从Hibernate文档上摘取的话: The UUID contains: IP address, startup time of the JVM (accurate to a quarter second), system time and a counter value (unique within the JVM). It's not possible to obtain a MAC address or memory address from Java code, so this is the best we can do without using JNI.
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu