Hibernate 主键概述(一)

 

 ★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

你可能感兴趣的:(Hibernate 主键概述(一))