一对多的配置思想是:在一的一方用一个Set集合来装多的对象。跟上一篇多对一的思想是不同的,多对一的思想是:在多的一方设置一的对象作为属性。
还是以学生和班级为例。这里因为是要配置一对多,所以班级类的文件改成如下:
package com.ye.models; import java.util.HashSet; import java.util.Set; /** * 类功能简单描述:这个是单向的多对一映射<BR/> * 类名:Class<BR/> * 作者yenairong<BR/> * 时间:2014年11月17日 下午1:00:17<BR/> * @version 1.0.0 <BR/> */ public class Class { private int classId; private String className; //在这里设置学生类用一个Set集合来装,就完成了一对多配置。new一个的 //原因是防止应用程序取值时,出现空指向异常 private Set<Student> stuSet = new HashSet<Student>(); public int getClassId() { return classId; } public void setClassId(int classId) { this.classId = classId; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public Set<Student> getStuSet() { return stuSet; } public void setStuSet(Set<Student> stuSet) { this.stuSet = stuSet; } }
在学生类那里是这样子配置的:
package com.ye.models; public class Student { private int stuId; private String studName; public int getStuId() { return stuId; } public void setStuId(int stuId) { this.stuId = stuId; } public String getStudName() { return studName; } public void setStudName(String studName) { this.studName = studName; } }
接下来配置班级Class和学生Student类的的映射文件:
班级类的映射文件是如下配置的(因为为有直接one - to - many-配置的标签,所以得改用一个Set标签来实现):
班级类的映射文件如下的形式:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 2014-11-16 18:45:07 by Hibernate Tools 3.4.0.CR1 --> <hibernate-mapping> <class name="com.ye.models.Class" table="c_table"> <id name="classId" type="int"> <column name="class_id" /> <generator class="native"> </generator> </id> <property name="className" type="java.lang.String"> <column name="class_name" /> </property> <!-- set里面name对应于本实体类里面的Set集合的实例名。inverse和lazy暂时不用设。它们默认是inverse="false" lazy="true" --> <set name="stuSet"> <key column="stu_id"></key><!-- 这里指定引用的外键名跟表里面的一样,key --> <one-to-many class="com.ye.models" ></one-to-many> </set> </class> </hibernate-mapping>
学生类的映射文件是这样配置的:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.ye.models.Student" table="student"> <id name="stuId" type="int"> <column name="stuid" /> <generator class="native" /> </id> <property name="studName" type="java.lang.String"> <column name="STUDNAME" /> </property> </class> </hibernate-mapping>
最后是配置hibernat.cfg.xml这个文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.password">123456</property> <property name="hibernate.connection.url">jdbc:mysql:///test</property> <property name="hibernate.connection.username">root</property> <!-- 数据库方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 是否显示sql语句 --> <property name="show_sql">true</property> <!-- 是否自动生成表结构,它有四个属性,一般常用的就是update --> <property name="hbm2ddl.auto">update</property> <!-- 映射文件 --> <mapping resource="com/ye/models/Class.hbm.xml"/> <mapping resource="com/ye/models/Student.hbm.xml"/> </session-factory> </hibernate-configuration>
附件的内容是直接可以运行的代码
相关推荐
**标题:“Hibernate 一对多关联”** 在Java的持久化框架Hibernate中,一对多关联是一种常见的关系映射,它模拟了数据库中的外键关联。这种关联类型表示一个实体(如用户)可以拥有多个关联的实体(如订单)。下面...
这篇博客文章“hibernate一对多关联映射(单向关联)”将深入讲解如何配置和使用这种映射关系。 在单向关联中,只有一个实体知道另一个实体的存在,也就是说,只有父实体("一"的一端)有对子实体("多"的一端)的...
本文将详细解析" Hibernate一对多关联实例 ",并涵盖关联的保存(save)、删除(delete)、查询(select)和更新(update)操作。 一、一对多关联概念 在数据库设计中,一对多关联表示一个表中的记录可以与另一个表中的多个...
一、Hibernate一对多关联映射 1.1 单向关联:在单向一对多关联中,一个实体类知道另一个实体类,而另一个实体类并不知情。这通常通过在一方添加一个集合属性来实现,该集合包含另一方的实例。例如,`Department`类...
本篇文章将深入探讨“Hibernate一对多关联关系”这一主题,并结合提供的"hibernateOneToMany"压缩包文件,展示如何实现一个简单的一对多关联关系的小型示例。 首先,我们需要理解Hibernate中的一对多关联关系。在...
本篇主要探讨的是Hibernate中的一对多关联映射,它允许一个实体对象对应数据库表中的多个行。在实际业务场景中,这种映射模式非常常见,例如一个用户可以拥有多个订单,一个部门可以包含多个员工等。 首先,我们来...
在Java的持久化框架Hibernate中,一对多关联映射是一种常见的关系映射方式,它用于表示一个实体(如用户)可以拥有多个子实体(如订单)的情况。在本篇文章中,我们将深入探讨如何实现双向关联的一对多映射,以及在...
Hibernate一对多关联映射学习小结 Hibernate是一种流行的Java持久层框架,它提供了强大的对象关系映射(ORM)功能,能够将Java对象与关系数据库中表之间建立映射关系。Hibernate的关联映射是其核心功能之一,可以将...
本教程将深入探讨Spring和Hibernate结合使用时的一对多关联映射,特别是部门与员工表的级联添加。 在数据库设计中,一对多关联是一个常见的关系类型,例如一个部门可以有多名员工,但每个员工只能属于一个部门。在...
### Hibernate映射一对多关联关系 #### 知识点概览 - **概念解析**:一对多(One-to-Many)关联关系的概念及其在Hibernate中的实现方式。 - **域模型设计**:创建具有一个实体与多个实体关联的域模型。 - **关系...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
Hibernate一对多关联配置 #### XML配置方式: 在Hibernate的映射文件中,我们通常会在一方(拥有端)的实体类映射文件中添加`<set>`或`<list>`标签来表示一对多关系。以下是一个简单的例子: ```xml <!-- "一"端...
在实体类之间,Hibernate支持多种关联关系,包括一对一(One-to-One)、一对多(One-to-Many)和多对多(Many-to-Many)。本资源主要探讨的是“hibernate一对一关联关系”。 一对一关联关系在现实世界中很常见,...
【标题】:“Hibernate多对一关联demo” 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作。本教程将详细解释如何在Hibernate中实现多对一的关联关系,以及如何通过一个实际的示例...
在保存或更新实体时,Hibernate会自动处理一对多关联的插入或更新。 通过这种方式,我们就可以在Hibernate中设置一对多非主键关联,使得在操作部门和员工数据时,能够方便地维护它们之间的关系。这种方法允许我们在...
本主题将主要聚焦在一对一和一对多关联。 2. **关联的方向性:** 关联可以是单向或双向的。单向关联只能从一个实体访问另一个,而双向关联允许两个实体之间互相访问。 3. **@OneToOne, @OneToMany, @ManyToOne ...
在提供的链接中,可以找到更多关于Hibernate一对多关联的实例和详细解释,包括如何在XML映射文件中配置这些关系。通过深入学习和实践,开发者能够熟练地在项目中运用Hibernate的一对多关联,提高开发效率和代码质量...