Hibernate基础之一对多映射

本文详细介绍了Hibernate中一对多及多对一关联映射的配置方法,并解释了inverse和cascade属性的作用。

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


1.关联映射用的比较多的为:一对多、映射。

2.一对多关联关系

2.1.在数据库中我们可以通过主外键,来表现一对多的关系。

2.2.hibernate代码中体现为我们通过一方持有多方的集合来实现,即在“一”端中使用<set>元素持有“多”的一端的对象。

2.3.配置一对多的关系(班级和学生关联为例)

2.3.1.grade.hbm.xml(班级映射文件)

1.<?xml version="1.0"?>  
2.<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
3."http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
4.<!-- Generated 2016-9-1 14:38:01 by Hibernate Tools 3.4.0.CR1 -->  
5.<hibernate-mapping>  
6.    <class name="com.imooc.entity.Grade" table="grade">  
7.        <id name="gid" column="gid" type="java.lang.Integer">        
8.            <generator class="increment" />  
9.        </id>  
10.        <property name="gname" type="java.lang.String">  
11.            <column name="ganme" length="20" not-null=”true”></column>  
12.        </property>  
13.        <property name="gdesc">  
14.            <column name="gdesc"></column>  
15.        </property>  
16.        <!-- 单项的一对的关联关系-- >
17.        <set name=”students” table=”student” >
18.            <!-- 指定关联的外键-->
19.            <key column=”gid”></key>
20.            <one-to-many class=”com.imoc.entity.student” />
21.        </set>    
22.    </class>  
23.</hibernate-mapping>  

2.3.2.hibernate.cfg.xml中指定映射文件位置:

1)<mapping resource=”com/imoc/entity/Student.hbm.xml”/>

2)<mapping resource=”com/imoc/entity/grade.hbm.xml”/>

3.多对一关联关系

3.1.多对一关系和关系型数据库中外键参照关系最匹配,即己方的表中的外键参照另一个表中的主键。

3.2.Hibernate代码中体现为多方持有一方的引用来实现,需要在多的一方使用<many-to-one>配置。

3.3.配置多对一的关系(班级和学生关联为例)

3.3.1.student.hbm.xml(学生映射文件)中class标签中增加:

<!--配置多对一的关联关系 -->
<many-to-one name=”grade” class=”com.imooc.entity.Grade” column=”gid”></many-to-one>


4.Inversecascade属性

4.1.Inverse属性

4.1.1.<set>节点的inverse属性指定关联关系的控制方向,默认有one方来维护。

4.1.2.关联关系中,inverse=”false”则为主动方,由主动方来维护关联关系,改为true则由多方维护关联关系。

4.2.cascade属性

4.2.1.<set>节点的级联操作属性cascade


5.总结:

5.1.实现单向一对多

5.2.实现单向多对一

5.3.inversecascade两个属性的运用

5.4.反向工程:根据数据库中的表自动生成持久化类和映射文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值