Hibernate主键生成策略与property标签

本文详细探讨了Hibernate中的主键生成策略,包括自然主键和代理主键的概念,并建议尽量使用代理主键以遵循OCP原则。同时,文章介绍了Hibernate如何通过property标签建立类属性与表字段的映射,特别强调了主键生成策略的重要性,指出可以通过不同的策略减少手动设置主键的工作。此外,还提到了property标签的一些常用属性,如name、column、length和type,并提示了type属性的三种取值。

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

Hibernate主键生成策略与<property>标签

- 主键的分类

定义hbm.xml映射文件和POJO类时都需要定义主键

  • 自然主键
  • 代理主键

1、自然主键(业务主键)
主键本身就是表中的一个字段(实体中的一个具体属性),也即不具有业务含义的字段作为主键。比如说创建一个人员表,人员都会有一个身份证号(唯一的不可重复的),如果使用了身份证号作为主键,那么这种主键就称为是自然主键;

2、代理主键(逻辑主键)
主键的本身不是我们表中必须的一个字段(不是实体中的某个具体属性),也即不具有业务含义的字段作为主键。比如说还是创建一个人员表,没有使用人员中的身份证号,用了一个与这个表根本不相关的一个字段,例如ID、PNO,那么这种主键就称为是代理主键。

建议:尽量使用代理主键!因为一旦你的自然主键参与到了你的业务逻辑当中,那么后期就有可能要修改源代码。要满足一个OCP原则,即对程序的扩展是open的,对修改源码是close的。

主键生成策略
一般不允许用户手动设置主键,一般会将主键交给数据库或者手动编写程序进行设置。在Hibernate中为了减少程序编写,提供了很多种主键的生成策略。
主键生成策略

<propert>标签

关于<property>标签
该标签用来建立类中的普通属性与表中非主键字段的对应关系。
name:类中的属性名称
column:表中的主键名称,类中的属性名和表中的字段名(主键名)如果一致,column可以省略
length:字段长度,如果length忽略不写,且你的表是自动创建这种方案,那么length的默认长度是255(可以根据你的映射文件自动建表,如果现在数据库里面是没有表的,那么只要一运行咱们的程序,它就可以帮你把表建起来。如果你没有给定长度,那么它便会使用默认长度,像字符串的长度默认就是255)
type:指定类型,你可以不用写,Hibernate会帮你自动转换
该标签中的子标签主要是描述主键生成策略的,这里就不做篇幅来介绍了,请看后面的文章。

该标签中有如下这些属性:
name:类中的属性名
column:表中的字段名
length:长度
type:类型
not-null:设置是否非空
unique:设置唯一

关于Hibernate映射配置文件中的类型问题
对于type属性它的取值可以有三种:

java—hibernate—SQL
数据类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值