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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值