2018.11.4 Hibernate中多对多的关系

简单总结一下

多表关系

一对多/多对一

O 对象 一的一方使用集合. 多的一方直接引用一的一方.

R 关系型数据库 多的一方使用外键引用一的一方主键.

M 映射文件 一:

多:

操作: 操作管理级别属性. 

    cascade: 级联操作
        减少我们书写的操作代码.
        none(默认值)   不级联
        save-update:    级联保存
        delete:         级联删除
        all:            级联保存+级联删除
    结论: 可以使用save-update.不推荐使用delete. 也可以不用cascade.
    inverse: 反转关系维护
        属于性能优化.关系的两端如果都书写了关系.那么两方都会发送维护关系的语句.
        这样,语句就发生重复.我们可以使用inverse使一的一方放弃维护关系.
        true            放弃
        false(默认值)  维护
    结论: 在一对多中,一的一方可以放弃维护关系.
        

多对多

O 对象 两方都使用集合.

R 关系型数据库 使用中间表.至少两列.作为外键引用两张表的主键.

M 映射文件 多:

操作:操作管理级别属性.
    cascade: 级联操作
        减少我们书写的操作代码.
        none(默认值)   不级联
        save-update:    级联保存
        delete:         级联删除
        all:            级联保存+级联删除
    结论: 可以使用save-update.不推荐使用delete. 也可以不用cascade.
    inverse: 反转关系维护
        属于性能优化.必须选择一方放弃维护主键关系.哪方放弃要看业务方向.

原文地址:https://www.cnblogs.com/qichunlin/p/9904700.html

时间: 2024-10-29 10:34:10

2018.11.4 Hibernate中多对多的关系的相关文章

2018.11.13 Hibernate 中数据库查询中的Criteria查询实例

Criteria是面向对象的无语句查询 Demo.java package com.legend.b_criteria; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Order; import org.hibernate.criterion.Pr

hibernate中多对多关联

hibernate中多对多关联 “计应134(实验班) 凌豪” 在关系数据库中有一种常见的关系即多对多关系,例如课程和学生的关系,一个学生可以选择多门课程,同时一门课程也可以被多个学生选择, 因此课程与学生的关系就可以看成是多对多的关系,其中课程表的结构如下图所示: 学生表user 在关系数据库中不能直接建立多对多关联,要想建立这种多对多的关系只能借助第三张中间表, 因此为了建立这种多对多的关系我们需要建立第三张表User_course 为了实现表的多对多关联,需要在两个表的Hibernate配

Hibernate中的一对一映射关系

Hibernate中的一对一映射关系有两种实现方法(一对一关系:例如一个department只能有一个manager) I使用外键的方式 步骤:1在一对一关联的持久化类中互相添加对方对象属性,   例如在department中添加private manager manager属性:   department代码如下: package com.atguigu.hibernate.one2one.foreign; public class Department { private Integer d

Hibernate的多对多映射关系

example: 老师(teacher)和学生(Student)就是一个多对多的关系吧?老师可以有多个学生,学生也可以由多个老师,那在Hibernate中多对多是怎样实现的呢?? 在Hibernate中多对多关系分为两种:1单向的多对多,2双向的多对多 下面详细说明一些两种有什么不同和实现步骤 I单向的多对多实现步骤: 1新建teacher.student表,可以任意选择在其中一个表添加另一个表的集合,(例如在teacher中添加student的set<Student>集合,例如private

关于hibernate中多对多关系

关于多对多关系 数据库:在使用多对多的关系时,我们可以使用复合主键.也可以不使用,直接引入外键同样可以实现. 在数据库中使用多对多关系时,需要一个中间表. 多对多关系中的数据库结构如下: 表:Orders 字段:orderid(主键)..... 表:Users 字段:usersid(主键),.... 中间表: cy_order_user 字段:cy_order_user主键id 外键:cy_orderid(引入Orders表) 外键:cy_usersid(引入Users表) 注意:中间表的外键是

Hibernate中多对多关系转换

问题来源 在运用SSH架构开发Web应用时,总会遇到表之间一对多.多对一.多对多等等的关系,而对于多对多的关系,在操作和性能方面都不太理想,所以多对多的映射使用较少,实际使用中最好转换成一对多的对象模型:hibernate会为我们创建中间关联表,转换成两个一对多. 问题解决 在此用开发OA项目时角色表和权限之间的多对多关系提供解决问题的建议 例子:角色与权限 (1)先看需求 (2)分析 第一,角色与权限:多对多 一个角色可以有多个权限,一个权限可以被多个角色使用 第二,在角色的增删改查中涉及到了

浅谈JavaEE中的Hibernate中的四种关系映射(三)

今天我们一起来探讨一下有关Hibernate四种关系映射,大家可能会有疑惑,关系映射不就是只有三种(一对一,一对多,多对多)吗?这里我们再多说一个继承映射关系,虽然它使用频繁度没有前三个那么多,但是它在一些特定情况下,还是非常有用的,至于有什么用下面马上就要讲.这些关系映射实际上就是对应着关系型数据库中的几种关系的类型.我们都知道Hibernate的作用是将面向关系数据操作,转换成面向对象的操作,其中关系映射文件就是实现这个转换的核心.我们都知道如果我们仅仅使用SQL语句建表并且去维护表与表之间

hibernate中多对多的注解配置

hibernate多对多的注解配置中的自动生成中间表的配置: @Entity@Table(name="test_student")public class Students { @Id @SequenceGenerator(name="seqStudents",sequenceName="seq_test_student") @GeneratedValue(generator="seqStudents") private In

Hibernate中多对多

学生 - 老师 1 package com.zhangpn.entity; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 6 public class Student { 7 private Long id; 8 private String name; 9 private Set<Teacher> teachers = new HashSet<>(); 10 11 public Long getId() { 12