hibernate主键类型

本文详细介绍了多种数据库主键生成策略,包括assigned、identity、sequence、increment、uuid、guid、native、hilo及sequencehilo等。每种策略的特点、适用场景及配置方式均有涉及。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.assigned
1).可跨数据库,int类型,数据库可设置自动增长列,但是可不赋值,也可赋值,但赋值后书库所增加的值还是自动增长列的值

2.identity
1).数据有数据库生成。int类型,但是主键必须是自动增长列,
支持其他的数据库出来oracle因为oracle只有序列

3.sequence
1).有数据库提供的sequence生成主键,但是由于每次自增所形成的主键
不一致,所以数据也会不是一个一个的增加的,
因此我们需要使用同一个序列化,设置:
  <generator class="assigned" >
<param  name="sequence或者sequence_name(现在使用的mysql的版本是这个)">abc</param>
</generator>

4.increment
1).每次从hibernate取出最大的主键,(与数据库交互两次),
每次增量1

5.uuid
1).十六进制的数据

6.guid
1).先从数据库中获取uuid()在赋值给id

7.native
1).完美结合个数据库,由hibernate自行判断数据是
属于sequence的主键类型还是identity的主键类型,
注:使用native时Hibernate默认会去查找Oracle中的hibernate_sequence序列。 
如果Oracle中没有该序列,连Oracle数据库时会报错。


8、hilo:
通过高低位合成id,先建表hi_value,再建列next_value。必须要有初始值。

 

<id name="id" column="id">  
<generator class="hilo">  
<param name="table">high_val</param>  
<param name="column">nextval</param>  
<param name="max_lo">5</param>  
</generator>  
</id>    


9、sequencehilo:
同过高低位合成id,建一个sequence序列,不用建表。

 

<id name="id" column="id">  
<generator class="hilo">  
<param name="sequence">high_val_seq</param>  
<param name="max_lo">5</param>  
</generator>  
</id>   


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值