美文网首页
Hibernate的多表操作

Hibernate的多表操作

作者: 东风谷123Liter | 来源:发表于2019-10-22 23:03 被阅读0次

    以前我们都是通过sql语句连关联两个或多个表。

    表之间的关系(实体之间的关系):

    • 一对一

    • 一对多

      • 在多的一方创建指向一方的外键
    • 多对多

      • 创建一个中间表,用来存放两个表的主键作为外键。

    一对多hibernate的关系配置

    • 实体关系,在多的一方的实体中创建一个一的一方的实体。在一的一方实体上创建一个多的一方的实体集合。

    • 创建映射文件,有几个实体就需要几个映射文件。

      • image.png
      • image.png

    一对多的联级保存和更新

      • 什么叫级联:是指保存一个对象时,是否会保存其相关联的对象。

        • 级联试有方向性的:

          • 操作一的一方时候,是否操作到多的一方

          • 操作多的一方时候,是否操作一的一方

      • 不使用级联,容易出现瞬时对象异常。

      • 需要配置一下

        • image.png
        • [图片上传中...(image-c80a29-1571756535362-0)]

      • image.png
    • 一对多的级联删除:

      • 默认:删除数据,将键设置为null。级联删除一定要先删除,再删除。

      • 情况1: image.png
      • 情况2: 基本不用,删除多的一方,级联去删除一的一方。实际情况中不合理,很少用。

    • 双向维护关系产生多余SQL

      • image.png
      • 解决办法:单向维护、使一的一方放弃外键维护权。

      • image.png
      • 一对多的关联查询的修改的时候。(CRM练习)

    • 区分cascade和inverse:

      • image.png

    多对多:

    • 可以用两个一对多来完成。

    • 也可以,双方都需要有一下配置。实体中都用set集合来关联对方对象。

    • image.png
    • 级联维护的时候,需要被动方放弃。

    • ‘多对多的级联删除基本用不上。

    • image.png
    • 多对多的其他的操作:(重要)

      • 给用户去 选择角色,改选角色,删除角色(给学生课程,修改选课,删除选课)

      • image.png
      • image.png
      • image.png

    相关文章

      网友评论

          本文标题:Hibernate的多表操作

          本文链接:https://www.haomeiwen.com/subject/tkacvctx.html