hihernate一对多关联映射(双向Classes<----->Student)
一对多双向关联映射:
* 在一一端的集合上使用<key>,在对方表中加入一个外键指向一一端
* 在多一端采用<many-to-one>
注意:<key>标签指定的外键字段必须和<many-to-one>指定的外键字段一致,否则引用字段的错误
如果在”一“一端维护一对多关联关系,hibernate会发出多余的udpate语句,所以我们一般在多
的一端来维护关联关系
关于inverse属性:
inverse主要用在一对多和多对多双向关联上,inverse可以被设置到集合标签<set>上,
默认inverse为false,所以我们可以从”一“一端和”多“一端维护关联关系,
如果设置成inverse为true,则我们只能从多一端来维护关联关系
注意:inverse属性,只影响数据的存储,也就是持久化
inverse和cascade
* inverse是关联关系的控制方向
* cascade操作上的连锁反应
映射关系:
Student.hbm.xml:
<hibernate-mapping>
<class
name="com.bjsxt.hibernate.Student" table="t_student">
<id
name="id">
<generator
class="native"/>
</id>
<property
name="name"/>
<many-to-one
name="classes" column="classesid"/>
</class>
</hibernate-mapping>
Classes.hbm.xml:
<hibernate-mapping
package="com.bjsxt.hibernate">
<class
name="Classes" table="t_classes">
<id
name="id">
<generator
class="native"/>
</id>
<property
name="name"/>
//默认inverse = false;反转,true时表示一的一端维护关系失效。反转到多的一端维护关系。不会发出updae语句。
<set name="students" inverse="true"
cascade="all">
<key
column="classesid"/>
<one-to-many
class="Student"/>
</set>
</class>
</hibernate-mapping>
Inverse
= true,cascade = all 保存:
session.beginTransaction();
Classes classes =
new Classes();
classes.setName("尚学堂");
Student student1 =
new Student();
student1.setName("10");
student1.setClasses(classes);
Student student2 =
new Student();
student2.setName("祖儿");
student2.setClasses(classes);
Set students = new
HashSet();
students.add(student1);
students.add(student2);
classes.setStudents(students);
//保存时会反转到student一端,由于cascade = all,会先把class保存,再保存student。
session.save(classes);
session.getTransaction().commit();
常用保存方法:在多的一端维护关系
session.beginTransaction();
Classes classes =
new Classes();
classes.setName("尚学堂");
session.save(classes);
Student student1 =
new Student();
student1.setName("10");
student1.setClasses(classes);
session.save(student1);
Student student2 =
new Student();
student2.setName("祖儿");
student2.setClasses(classes);
session.save(student2);
session.getTransaction().commit();
- 大小: 25.6 KB
分享到:
相关推荐
### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...
- `<one-to-one>`、`<one-to-many>`、`<many-to-many>`:表示关联关系的映射。 #### 2.3 id的内置生成器 - **常见生成器**: - `increment`:每次生成一个递增的值。 - `identity`:由数据库自动生成唯一标识符...
在 Hibernate 映射文件中,我们使用 `<set>` 标签来定义集合关系,`<one-to-many>` 标签表示从 Customer 到 Order 的关系,而 `<many-to-one>` 标签则表示从 Order 到 Customer 的关系。注意设置 cascade 参数以处理...
### Hibernate学习笔记小结 #### 一、简介与配置 **Hibernate** 是一款开源的对象关系映射(ORM)框架,它允许开发人员将Java对象自动持久化到数据库表中,从而简化了数据访问层的开发工作。在Spring框架中,...
标题:Hibernate学习笔记3 描述:本篇笔记深入探讨了Hibernate框架中一对多关系的映射及持久化对象状态管理,结合个人理解与实践经验,旨在为读者提供一份详实的学习资料。 ### 一、一对多关系映射详解 在...
【Hibernate学习笔记,使用Hibernate做数据层非常方便】 在Java开发中,Hibernate是一个非常流行的ORM(Object-Relational Mapping)框架,它简化了数据库操作,将数据库中的表映射为Java对象,使得开发者可以像...
### Hibernate 学习笔记4 —— 多对多关系与多态映射 #### 多对多关系 在 Hibernate 中处理多对多关系时,通常采用一种称为“连接表”或“关联表”的方法来实现两个实体之间的多对多关联。这种设计方式较为常见且...
例如,<many-to-one>标签用于描述多对一的关联映射,而<one-to-one>则用于描述一对一的主键关联映射。文档中还提到了级联属性(-cascade),它定义了在对父对象进行操作时,是否将操作也作用到关联的子对象上。 ...