现在的位置: 首页 > 综合 > 正文

Hibernate 主键概述(一)

2013年12月12日 ⁄ 综合 ⁄ 共 752字 ⁄ 字号 评论关闭

 

 ★assigned 

<id name="id" type="integer">
<colum name="id" />
<generator class="assigned"></generator>
</id>

1.主键的生成完全由用户决定,与底层数据库无关

2.用户需要维护主键值

3.在调用session.save()前要指定主键值

 

★hilo

默认表为hibernate_unique_key,只有一个int类型字段next_hi,必须有一行数据,而且不能更改

<id name="id" type="integer">
<colum name="id" />
<generator class="hilo"></generator>
</id>

自己建表,例如my_unique_key,字段为next_hi_value,一样必须有一行数据,而且不能更改

<id name="id" type="integer">
 
<colum name="id" />
 
<generator class="hilo">
      <param name="table">my_unique_key</param>
      <param name="column">next_hi_value</param>
     </generator>
</id>

1.需要额外的数据库表的支持

2.能保证同一个数据库中主键的唯一性,但不能保证多个数据库之间主键的唯一性

3.hilo主键生成方式由Hibernate维护,所以hilo方式与底层数据库无关。但不应该手动修改hi/lo算法使用的表的值,否则会引起主建重复的异常

★seqhilo

使用方法与hilo方式类似,通过hi/lo算法生成主键,但要求底层数据库支持sequence,如Oracle,DB2

抱歉!评论已关闭.