Kira-2006
-仅仅是一阵风也罢了,偏偏是这样永恒, 仅仅是一场梦也罢了,偏偏是如此的真实,
posts - 4,comments - 7,trackbacks - 0

<!--设置主键映射-->
<id  name=""  column=""  type="">
    <generator  class="">  设置主键生成器
</id>
Hibernate框架内建为主键提供了多种生成器,具体包括如下内容:
1. increment:用于为long,short,int类型生成唯一标识。
2. identity:对DB2,MySQL,MS SQL Server,Sybase和HypersonicSQL的内置标识字段提供支持。
3. sequence:在DB2,PostgreSQL,Oracle,SAPDB,McKoi中使用序列(sequence),而在Interbase中使用生成器(generator)。
4. hilo:使用一个高/低位算法高效生成long,short或int类型的标识符。给定一个表和字段(默认分别是hibernate_unique_key和next)作为高位值的来源。高/低位算法生成的标识符只在一个特定的数据库中是唯一的。
5. seqhilo:使用一个高/低位算法高效生成long,short或int类型的标识符,给定一个数据库序列(sequence)的名字。
6. uuid.hex:用一个128-bit的UUID算法生成字符串类型的标识符。在一个网络中是唯一的(使用了IP地址)。UUID被编码位一个32位16进制数字的字符串。
7. uuid.string:使用同样的UUID算法。UUID被编码位一个16个字符长的任意ASCII字符组成的字符串。
8. native:根据底层数据库的能力选择identity、sequence、hilo中的一个。
9. assigned:让应用程序在插表之前为对象分配一个标识符。
10. foreign:使用另一个相关联的对象的标识符。通常被用在有关联关系的表中。

一般来说,在Hibernate中,不推荐用assigned作为主键生成器。因为对数据库表来说,以业务逻辑字段作为主键有潜在的危险性。当该业务逻辑字段在将来需要改变的时候,作为主键的应用就会相当麻烦。常用的手段是用一个和业务无关的字段作为主键,而在PO中定义这个字段成为变量属性,同事又作为该对象的惟一标识。

posted on 2008-04-26 18:15 Kira-2006 阅读(404) 评论(0)  编辑  收藏 所属分类: hibernate

只有注册用户登录后才能发表评论。


网站导航: