Hibernate的ID的标识符生成器

原创 2007年09月27日 17:55:00
算法实现的主键生成机制,需要数据库中的 Sequence,适用于支持 Sequence 的数据库,如Oracle。

“increment”
主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:不能在集群下使用。


“identity”
采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL 中的主键生成机制。


“sequence”
采用数据库提供的 sequence 机制生成主键。如 Oralce 中的Sequence。


“native”
由 Hibernate 根据使用的数据库自行判断采用 identity、hilo、sequence 其中一种作为主键生成方式。


“uuid.hex”
由 Hibernate 基于128 位 UUID 算法 生成16 进制数值(编码后以长度32 的字符串表示)作为主键。


“uuid.string”
与uuid.hex 类似,只是生成的主键未进行编码(长度16),不能应用在 PostgreSQL 数据库中。


“foreign”
使用另外一个相关联的对象的标识符作为主键。


以下举例:
1、指定参数的情况:
    <id name="id" unsaved-value="0">
      <generator class="sequence">
        <param name="sequence">SEQ_CHILD</param>
      </generator>
</id>
使用的是sequence,适合oracle数据库;


2、对于sql server2000中的数据库子增字段,在配置文件使用下列方法实现:
<id name="id" type="long" unsaved-value="0">
     <column name="id" sql-type="numeric" not-null="true" />
     <generator class="identity" />
</id>
这里主要是:identity:代表由sql server2000数据库自己提供子增字段.如果要hibernate自己提供,则用increment关键字来实现


3、如果表中的主键用字符串类型:可以用hibernate自己提供的方法实现主键唯一:
  <id name="id" type="string" unsaved-value="null">
      <column name="cid" sql-type="char(32)" not-null="true" />
      <generator class="uuid.hex" />
  </id>
使用的是uuid.hex: 采用128位的算法来生成一个32位字符串。最通用的一种方式。适用于所有数据库。

版权声明:欢迎加入开源技术 Q 群:242561391,让学习和分享成为一种习惯!

Hibernate中的8种标识符生成器

1.assigned标识符生成器   assigned标识符生成器指定由应用程序生成并维护持久化对象的标识符。在这种情况下,标识符生成器使用应用程序分配给对象的标识符值。一般情况下,assigned...

Hibernate内置对象标识符(OID)生成器

1.increment标识符生成器: private

Hibernate内置标识符生成器

原文地址 CoderGO : http://leekai.me/?p=205引言Java默认情况是根据内存地址来区分不同的对象,关系数据库则是根据主键值区分不同的行。Hibernate使用对象标识符(...

Hibernate标识符生成器

1.assigned标识符生成器   assigned标识符生成器指定由应用程序生成并维护持久化对象的标识符。在这种情况下,标识符生成器使用应用程序分配给对象的标识符值。一般情况下,assigne...

hibernate之标识符生成器用法

hibernate常用主键生成策略说明
  • yhl_jxy
  • yhl_jxy
  • 2016年02月16日 15:08
  • 513

Hibernate 之 标识符生成器/映射类型

下午用hibernate去改善一个项目,结果出现了好多关于映射类型的问题,在网上搜的好多答案也不尽人意,后来结合着hibernate文档以及孙卫琴老师的《hibernate逍遥记》终于解决了 hib...
  • ljfbest
  • ljfbest
  • 2012年04月12日 11:54
  • 917

hibernate中id生成器详解

1、identity:用于MySql数据库。特点:递增  id name="id" column="id">      generator class="identity"/>  /id...

hibernate的ID生成器

主键生成策略 把类里头的id属性映射成表里头字段,尽量定义成逻辑主键,不定义成业务主键。 主键属性类型:generator Hibernate内置的主键的四种生成策略: 采用数据库提供的主键生成机...

hibernate id 生成器

一、identity:用于MySql数据库。特点:递增                     注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increm...

hibernate中的id生成器

1) assigned 主键由外部程序负责生成,无需Hibernate参与。 2) hilo 通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。 3) seqhilo 与...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate的ID的标识符生成器
举报原因:
原因补充:

(最多只允许输入30个字)