Hibernate主键策略生成器

本文介绍了Hibernate提供的多种主键生成策略,包括native、uuid、identity、sequence、increment、foreign及guid等,并详细解释了每种策略的特点及应用场景。

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


Hibernate主键策略生成器

hibernate提供多种主键生成策略,有点是类似于JPA 有的是hibernate特有:

native: 对于oracle采用sequence方式,对于 MySql和sql server采用identity(自增主键生成机制)
            native就是将主键的生成工作交由数据库完成

uuid: 采用128位的uuid算法生成主键,uuid被编码为一个32位16进制数字的字符串占用空间大(字符串类型)

示例代码片段:

@Entity
@Table(name="ts_resource")
public class Resource {
    @Id
    @GeneratedValue(generator="idGenerator")
    @GenericGenerator(name="idGenerator", strategy="uuid")
	private String id;

对应数据库:varchar2(32)。



identity:使用SQL Server和MySQL的自增字段,这个方法不能放到Oracle中,Oracle不支持自增字段,要设定sequence

sequence: 调用底层数据库的序列来生成主键,要设定序列名 不然hibernate无法找到

increment: 插入数据的时候hibernate会给主键添加一个自增的主键,但是一个hibernate实例就维护一个计数器,所以在多个实例运行的时候不能使用这个方法

foreign: 使用另外一个相关联的对象的主键,通常和<one-to-one>联系起来使用。

guid: 采用数据库底层的guid算法机制。对应MySQl的uuid()函数 SQL Server的newid()函数 Oracle的sys_guid()函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值