hibernate ID生成策略

本文介绍了Hibernate中的ID生成策略,包括increment、identity、sequence、hilo、uuid、guid、native、select和foreign等,详细解释了各种策略的适用场景和数据库兼容性。在MySQL环境下,推荐使用increment自增策略。

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

genetator方式:
  1. increment:集群下不上用
  2. identity:auto increment
  3. sequence:oracle
  4. hilo:专门生成id算法,高字节+低字节
  5. seqhilo
  6. uuid:universal unique id:全局统一id
  7. guid:global很少
  8. native:数据库自动选择生成方式
  9. select:  从一个表中取值
  10. foreign:外键方式,参照主表的主键生成

对不同数据库选取的方式

mysql :建议auto ,采用increment自增

oracle:建议sequence,优化



@annotation设置
@GeneratedValue
生成策略

使用@Id注解可以将实体bean中的某个属性定义为标识符(identifier). 该属性的值可以通过应用自身进行设置, 也可以通过Hiberante生成(推荐). 使用 @GeneratedValue注解可以定义该标识符的生成策略:

  • AUTO - 可以是identity column类型,或者sequence类型或者table类型,取决于不同的底层数据库.
  • TABLE - 使用表保存id值
  • IDENTITY - identity column
  • SEQUENCE - sequence
oracle sequence:
在类前面@SequenceGenerator(name="teacherSequence",sequenceName=")生成器名字
然后再get id前 @GeneratedValue(strategy=GenerationType.SEQUENCE,generator= "teacherSequence"


tableGenerator(name,table,plColumnName="key",valueColumnName="value",pkColumnValue="Teacher",allocationSize=1)
会生成一张表,两个字段,表明table,列名 key ,value, 第一条记录 teacher 1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值