Hibernate之主键生成策略

一,概述

在Hibernate的映射文件中可以通过<generator class="XXX"></generator>来指定主键的生成策略,不同的主键生成策略还是有一些区别的,有时为了需求,还得指定特定的主键生成策略,方便开发.

二,关于主键

1)一个表能否有多个主键?为什么要设置主键?

不能;数据库存储的数据都是有效的,必须保持每张表的每条记录唯一!

2)为什么通常喜欢将id设置为主键?

因为表中通常找不到合适的列作为作为唯一列即主键,所以为了标识方便就使用了id列,因为id是数据库系统维护的,可以保证唯一,因此把这列作为主键!

3)联合/复合主键

如果找不到合适的列作为主键,除了使用id列外,还可以使用复合主键,即将多列作为主键,从而唯一标识表中的每一条记录,保证唯一性!

三,主键的生成策略

1)主键的生成策略

identity sequence native increment assigned uuid foreign.

2)区别

1)identity:自增长(mysql db2).

2)sequence:自增长(序列),oracle数据库是以序列方法实现的.

3)native:自增长,会根据底层数据库自增长的方式现在identity或sequence.如果是mysql数据库,采用的自增长方式为identity;如果是oracle数据库,采用的自增长方式是sequence.

4)increment:自增长(会有并发访问的问题,一般在服务器集群环境使用会存在问题).

5)assigned:自定主键生成策略为手动指定主键的值.

6)uuid:指定uuid随机生成唯一的值.

7)foreign:使用外部表的字段作为主键(one-to-one时会用到).

四,总结

最近无法静下心来学习...好烦...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值