hibernate 表关系映射详解之多对多

举例:商品类型表与商品表,每种类型对应多个商品,每个商品对应多种类型

关系图:

hirbernate实现多对多映射有两种方法,第一种是通过中间表直接映射,第二种是通过中间表间接映射。

直接映射:

配置实体类(因为都是多对多的关系,所以双方都具有set集合):

配置实体类的映射文件:

分析:category类先通过category_Id与中间表tb_category_product建立联系,然后再通过多对多标签中的porduct_id与product类建立多对多联系。

product类同上类似。

间接映射:

提出:多对多的间接映射,不是上文通过<many-to-many>标签直接映射,而是拆分成多对一,一对多间接映射

配置实体类(增加中间表实体类):

修改实体类(原先的多对多是对方的集合,此时改成中间表实体类的集合):

修改配置文件:

类型表的映射文件--------------------------------------------------------------------------------------------------------

中间表的映射文件--------------------------------------------------------------------------------------------------------

商品表的映射文件----------------------------------------------------------------------------------------------------------------

分析:此时先通过一对多连接中间表,中间表再以多对一连接两端的多方表,就可以达到多对多的效果

时间: 2024-10-11 22:36:36

hibernate 表关系映射详解之多对多的相关文章

hibernate 表关系映射详解之一对多

一对多 传统模式:jdbc连接数据库的传统模式下,是通过主键连接外键实现一对多关系的映射, 其数据库中表的对应关系是在多方加入一方的主键,而后形成外键连接. Hibernate:引入hibernate框架后,通过类的形式来表示一对多的关系. 举例:订单与订单详细的关系,一个订单包含多个商品,多个商品属于一个订单,两者的关系是一对多的关系. 实现原理: 面向对象实现------ 在order类中加入item类的set集合 ,表示在订单类中包含有多个订单详细(集合表示). 层次结构: 步骤一:编写实

hibernate 表关系映射详解之一对一

举例:用户和邮箱的关系,一个用户拥有一个邮箱,一个邮箱属于一个用户 关系图: 实现原理:因为两者皆是一方,无论在那一方加入,都可实现单项映射. 配置文件: 结构图: 实体类: hibernate实现映射一对一中有两种方法. 方法一(通过多对一映射): 步骤一: 在Customer类中加入Email类 步骤二:配置customer类的映射文件  -- > Customer.hbm.xml 本来多对一的映射,加入unique(唯一)之后,就很巧妙的变成一对一的映射,网上说这样的拓展性很好,没试过,这

hibernate 表关系映射详解之继承关系

举例:亚马逊的网上商城可以卖很多东西,比如说图书,电器,水果等等,那么我们以面向对象的理念去抽象一个商品类,他具有商品的共有属性,比如说上架时间,当前         价格,优惠价格等待,商品可以继承商品类,也可以保有自己的属性,比如说商品名等等.这种关系称为继承. 上文说到继承,那么怎么在数据库中体现继承,以及在hibernate实现继承. 数据库表中体现继承,可以先创建一个商品类表,然后创建一个商品表(类型不定),他们之间拥有同样的主键建立联系. 表结构: 如何在hibernate中实现继承

Hibernate学习(五)———— hibernate一对一关系映射详解

一.一对一关系的概述 一对一关系看起来简单,其实也挺复杂的.其中关系就包含了四种,单向双向和主键关联外键关联. 什么意思呢,也就是包含了单向一对一主键关联.双向一对一主键关联,单向一对一外键关联,双向一对一外键关联, 这四种中,单双向就不用在说了把,就是看你业务需求来去设置是否是单双向,而外键关联也很简单,前面的一对多和多对多度是依靠外键关联关系来写的.那主键关联关系是怎么样的呢?其实跟外键关联差不多,唯一的区别就是,让一个类的主键当作外键使用来指向另一个关联类的主键,从而两个类的主键就达到了同

hibernate(五) hibernate一对一关系映射详解

序言 之前讲解了一对多(单向.双向).多对多(双向),今天就讲解一下最后一个关系,一对一. 心情不错.状态也挺好的,赶紧写一篇博文造福一下大家把. --WZY 一.一对一关系的概述 一对一关系看起来简单,其实也挺复杂的.其中关系就包含了四种,单向双向和主键关联外键关联. 什么意思呢,也就是包含了单向一对一主键关联.双向一对一主键关联,单向一对一外键关联,双向一对一外键关联, 这四种中,单双向就不用在说了把,就是看你业务需求来去设置是否是单双向,而外键关联也很简单,前面的一对多和多对多度是依靠外键

【Hibernate步步为营】--多对多映射详解

上篇文章详细讨论了一对多映射,在一对多映射中单向的关联映射会有很多问题,所以不建议使用如果非要采用一对多的映射的话可以考虑使用双向关联来优化之间的关系,一对多的映射其实质上是在一的一端使用<many-to-one>标签来标明它们之间的关系,另外还需要在一的一端的对象中使用set标明集合映射. 一.单向多对多 仍然按照前几篇的文章格式来讨论,首先来看对象之间的关系,单向的多对多关系是两个对象之间发生的,比如在人和职位之间,一个人可以有多个职位,而且一个职位也可以由多人来负责,所以它们之间就形成了

hibernate 对象关系映射文件详解

POJO 类和数据库的映射文件*.hbm.xml POJO类和关系数据库之间的映射可以用一个XML文档来定义. 映射文件的扩展名为.hbm.xml 在运行时Hibernate将根据这个映射文件来生成各种SQL语句 通过POJO类的数据库映射文件,Hibernate可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据库表列之间的对应关系 映射文件说明 hibernate-mapping 类层次:class 主键:id 基本类型:property 实体引用类: many-to-one

【Hibernate步步为营】--继承映射详解

上篇文章讨论了多对多映射,在使用多对多映射时重点是使用<many-to-many>标签,并在标签的两端加入外键这样在生成关系时会创建两个关系之间的关系表,通过关系表来维护它们之间的关系,另外对于单向和双向的区别是在映射的哪一端添加标签的问题.在面向对象中很重要的一个特性就是继承,继承实现了代码的复用,而且Hibernate把基本上所有的对象模型进行了映射封装,其中就包括继承映射,接下来就详细讨论. 一.继承映射 继承是面向对象很重要的特性,它实现了代码的服用,在关系模型中同样也有继承关系,这种

mybatis懒加载特性详解,以及多对多映射详解

注意讲解都在代码中 准备数据库,测试数据,各位自己添加,因为是多对多,所以使用中间表: 用到的实体: 学生类: public class Student { private Integer sid; private String name; private Integer age; //一个学生有多个老师,一个老师有多个学生 private List<Teacher> teachers=new ArrayList<Teacher>(); setter.. getter.... to