2><one-to-one>外键关联:
开发中可以参照<one-to-one>主键关联和<many-to-one>
这里,学生表保存不变,只改变证件表:
<hibernate-mapping>
<class name="org.wen.beans.Card" table="card" lazy="true">
<id name="cardid" type="java.lang.Integer">
<column name="cardid"/>
<generator class="increment"/><!-- 不再是foreign了,因为它的主键不是学生表的主键,它的主键是自动产生的,它的外键才是学生表的主键 -->
</id>
<property name="cardnum" type="java.lang.String">
<column name="cardnum" length="20" />
</property>
<many-to-one name="user" column="userid" class="org.wen.beans.user" unique="true"/>
<!-- 惟一的多对一,如果被限制为唯一,实际上变成一对一关系了 -->
<!-- unique设为true表示使用DDL为外键字段生成一个惟一约束。
以外键关联对象的一对一关系,其本质上已经变成了一对多的双向关联,
应直接按照一对多和多对一的要求编写它们的映射文件。当unique为
true时实际上变成了一对一的关系。
***这里需要强调一点的是<many-to-one>元素必须有column这一项,它表示这个这个表的外键是什么.注意,这里是表的外键,不是类的外键-->
</class>
</hibernate-mapping>
3>:<one-to-many>单身关联
一对多关联分为单向一对多关联和双向一双多关联
单向的一对多关联只需要在一方进行映射配置
单身一对多关联:
<hibernate-mapping>
<class name="org.wen.beans.Customers" table="customers" catalog="study">
<id name="id" type="java.lang.Long">
<column name="ID" />
<generator class="native" />
</id>
<property name="userName" type="java.lang.String">
<column name="userName" length="20" />
</property>
<set name="orders" table="orders" cascade="save-update" inverse="true">
<key column="customers_ID"></key>
<one-to-many class="org.wen.beans.Orders"/>
</set>
</class>
</hibernate-mapping>
这里需要强调的是<set>元素的属性代表的意义:
name
table
lazy:当为true时为延迟加载,为false时为立即加载
inverse:用于表示双向关联中的被动一端,inverse的值为false的一方负责维护关联关系
cascade
sort:排序关系,unsorted(不排序),natural(自然排序),comparatorClass(由某个实现了java.util.comparator接口的类型 指定排序算法。);
******<key>子元素的column属性指定关联表(orders表)的外键(customers_ID)
4>:<one-to-many>双向关联:
如果要设置一对多双向关联关系.那么还需要在"多"的映射文件中使用<many-to-one>
<many-to-one name="customer"
class="org.wen.beans.Customers"
column="customers_ID"
cascade="none"
outer-join="auto"
insert="false" insert和update设定是否对column属性指定的关联字段进行insert和update操作
update="false">
</many-to-one>
4>多对多关联:
多对多关联时要建一个连接表查询
学生的映射文件
<hibernate-mapping>
<class name="org.wen.beans.Students" table="students" catalog="study">
<id name="stuId" type="java.lang.Long">
<column name="stuID" />
<generator class="native" />
</id>
<property name="sname" type="java.lang.String">
<column name="sName" length="20" />
</property>
<set name="teachers" table="student_teacher_table" cascade="save-update" inverse="false">
<key column="stuID"></key>
<many-to-many class="org.wen.beans.Teachers" column="teaID"></many-to-many>
</set>
***对<key>元素的理解:
它的控制主要是通过stuID(外键)来完成,就是我们从student_teacher_table表中我们只要
select * from student_teacher_table where stuID='该学生的ID',这样我们就可以得到它的教师的ID了
***对<many-to-many>的理解:
我们从student_teacher_table表中根据stuID拿到了与该stuID关联的teaID,
然后select * from teacher where teaID='前一步拿到的teaID'
</class>
</hibernate-mapping>
教师的映射文件
<hibernate-mapping>
<class name="org.wen.beans.Teachers" table="teachers" catalog="study">
<id name="teaId" type="java.lang.Long">
<column name="teaID" />
<generator class="native" />
</id>
<property name="teaName" type="java.lang.String">
<column name="teaName" length="20" />
</property>
<set name="students" table="student_teacher_table" inverse="true">
<key column="teaID"></key>
<many-to-many class="org.wen.beans.Students" column="stuID"></many-to-many>
</set>
</class>
</hibernate-mapping>
相关推荐
### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。...希望本文能对你理解Hibernate的多表联合查询有所帮助。
在处理多表关联时,Hibernate提供了多种关联类型,包括一对一(OneToOne),多对一(ManyToOne),一对多(OneToMany)和多对多(ManyToMany)。本文将详细介绍这些关联配置以及如何解决可能出现的错误。 **一对一关联...
总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...
总结,"Hibernate基于连接表的一对多单向关联"涉及到的主要知识点包括:数据库设计的一对多关系、Hibernate的实体映射、单向关联的配置、以及如何在Java代码中操作和查询这种关联。理解并熟练应用这些知识点,对于...
根据提供的文件信息,我们可以深入探讨Hibernate中的连表查询方法及其应用。下面将详细介绍与标题、描述及部分代码相关的几个核心知识点: ### Hibernate 连表查询基础 Hibernate 是一个开源的对象关系映射(ORM)...
本篇将深入探讨Hibernate的四种主要关联关系:一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany),并结合实例来阐述每种关系的配置和使用。 1. **一对一关联(OneToOne)** 一...
总结来说,理解并能正确使用Hibernate中的多对多双向关联是Java开发中的重要技能,涉及到实体设计、映射配置、数据操作和性能优化等多个方面。通过学习提供的博客和相关代码示例,开发者可以深入掌握这一主题,并将...
总结起来,"hibernate的表关联操作"是Hibernate ORM中的核心部分,它通过对象关系映射简化了数据库操作,让开发者能更专注于业务逻辑。理解并熟练掌握这些关联关系的配置和使用,对于提升开发效率和代码质量至关重要...
在Java持久化框架Hibernate中,关系映射是数据库关系模型在对象模型中的体现,它允许我们将数据库的表间关系转换为对象间的关联。本文将深入探讨三种主要的关系映射类型:一对一(One-to-One)、多对一(Many-to-One...
总结起来,Hibernate提供了多种多表查询方式,以适应不同的业务需求和性能优化。在实际开发中,应根据具体场景选择合适的方法,并注意性能优化,如使用缓存、调整FetchType等。提供的源代码示例可以帮助更深入地理解...
总结,Hibernate的多对多关系映射是数据库设计中非常重要的一个部分,它简化了Java对象与数据库表之间的交互。通过理解并实践案例,我们可以更深入地掌握这一特性,提高开发效率。在实际项目中,根据业务需求,合理...
### Hibernate知识点总结 #### 一、Hibernate概述 Hibernate是一个开源的ORM(Object Relational Mapping,对象关系映射)框架,用于Java应用与关系型数据库之间的交互。它通过使用描述对象和数据库之间映射的元...
总结来说,使用Hibernate映射一对多关联关系涉及到实体类的设计、数据库关系模型的构建以及映射文件的编写等多个方面。正确地实现这些步骤可以帮助我们高效地管理和操作数据,提高应用程序的性能和可维护性。
在Hibernate中,多表查询通常涉及到关联关系的映射,包括一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)。通过这些关联,我们可以实现JOIN操作来获取多个表的数据。 1. 关联...
- `cascade`: 可以设置级联操作,如`CascadeType.ALL`表示对关联对象执行的所有操作也会影响到另一端的对象。 2. **中间表**: 多对多关系通常需要一个中间表来存储两个实体的关联信息,但在Hibernate中,我们不...
通过查看代码和运行示例,开发者可以深入理解Hibernate是如何自动处理复杂的关联操作,比如通过中间表实现多对多的添加、删除和查找。 **总结** 这个"Hibernate多对多实例+数据库代码"涵盖了ORM的核心概念,特别是...
总结,Hibernate的多对多关系映射提供了灵活的方式处理复杂的数据库关联,通过`@ManyToMany`和`@JoinTable`等注解,可以轻松地定义和维护这种关系。然而,使用时需注意性能优化,确保系统的高效运行。
本篇文章将深入探讨Hibernate中的三种主要关联关系:一对一、一对多和多对多。 **一对一关联(One-to-One)** 一对一关联在现实生活中很常见,例如一个人只有一个身份证。在Hibernate中,这种关联可以通过`@...