Hibernate:one-to-many(一对多)关联映射详解

本文详细介绍了Hibernate中的一对多关联映射,从概念到模型建立,再到配置和应用,包括双向关联的实现。通过示例展示了数据插入、查询及关系维护,探讨了可能的性能问题和解决方案。

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

什么是one-to-many?

概念

一对多关联,一个对象通过关联属性能够对应多个对象。
在数据库中表现为:一张表中的记录通过在另一张表中设立外键来与其建立关联关系,外键在另一张表中对应本表中对应记录的主键,且可以拥有相同的外键来对应本表中的同一条记录。

举例:
学生在学校中都有所属的班级,一个班级对象中可以有多个学生对象,而每个学生对象都对应着一个班级。班级和学生之间的关系就是多对一关系。

建立模型

在这里插入图片描述

使用并配置one-to-many

定义实体类
Student类:

在这里插入图片描述
Classes类:

在这里插入图片描述

使用set集合定义关联属性的类型。

PS: Hibernate对set进行了重写,使set支持懒加载,因此Hibernate中一般使用的是set而不是list

略过Student.hbm.xml映射文件,我们主要看Classes.hbm.xml:

在这里插入图片描述
主键生成策略为native(数据库生成)

使用set标签映射set集合 (没有进行泛型的集合可以存放任何类型的对象),设置set中存放Student类型的对象。
通过key标签指定在one-to-many所指的Student类所对应的表中创建名为classesid字段,该字段作为外键,参照当前类所对应表中的主键。

PS: key标签用来在其他表中设立关联本表的外键字段。

配置原理

将外键字段建立在另一张表中,这个字段参照的是当前表的主键,从而建立两张表的联系。

one-to-many的应用

使用一对多关联进行表的创建和使用

创建表:

在这里插入图片描述
我们看到t_student表中添加了classid字段,且classid作为外键,参照t_classes表中的主键。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值