Day44 Java框架 Hibernate框架(三)hibernate表操作--多对多配置

一.一对多关联映射

  1. 数据库表与表之间的关系
    1. 一对多关系
    2. 多对多关系
    3. 一对一关系
         唯一外键对应: 假设是一对多的关系,在多的一方创建外键指向一的主键,将外键设置为unique
         主键对应 : 让某个表的主键作为另外一个表的主键
  2. 一对多关系配置
    1. 创建一个项目,引入相应jar包
    2. 创建数据库和表
    3. 创建实体
      一的一方 :   放置的是多的一方的集合,Hibernate默认使用的是Set集合
      多的一方 :   放置的是一的一方的对象
  3. 创建映射文件
    1. 多的一方的映射的创建
                      * name   :一的一方的对象的属性名称
                      * class    :一的一方的类的全路径
                      * column :多的一方的表的外键的名称

      <many-to-one name="customer" class="com.mine.hibernate.domain.Customer" column="lkm_cust_id">
      </many-to-one>

    2. 一的一方的映射的创建
                      * name    :多的一方的对象集合的属性名称
                      * column  :多的一方的表的外键的名称
                      * class     :多的一方的类的全路径
              <set name="linkMans">
                  <key column="lkm_cust_id"></key>
                  <one-to-many class="com.mine.hibernate.domain.LinkMan"/>
              </set>
  4. 创建核心配置文件
  5. 引入日志,引入工具类
  6. 编写测试类

二.一对多相关操作

  1. 一对多关系只保存一边 :  不可以
  2. 一对多的级联操作
    1. 级联 : 指的是,操作一个对象的时候,是否会同时操作其关联的对象
    2. 级联有方向性
              操作一的一方的时候,是否操作到多的一方
              操作多的一方的时候,是否操作到一的一方
  3. 级联保存或更新
            保存客户级联联系人
                    需要在客户的配置文件Customer.hbm.xml中Set标签里添加属性cascade="sava-update"
                    <set name="linkMans" cascade="save-update">
            保存联系人级联客户
                    需要在联系人的配置文件LinkMan.hbm.xml中标签里添加属性cascade="sava-update"
  4. 级联删除
            删除一边的时候,同时将另一方的数据也一并删除
            删除客户 级联删除联系人
                    需要在客户的配置文件Customer.hbm.xml中Set标签里添加属性cascade="sava-update , delete"
  5. 一对多设置了双向关联会产生多余的SQL语句
    1. 单向维护
    2. 使一方放弃外键维护权
              一的一方放弃
              需要在客户的配置文件Customer.hbm.xml中Set标签里添加属性inverse="true"
  6. 区分cascade和inverse:
    cascade负责的是 : 关联关系
    inverse负责的是: 外键控制       

三.多对多的关联映射

  1. 创建表
    用户表,角色表,中间表
  2. 创建实体
    用户实体  : 放置的是角色的集合
    角色实体  : 放置的是用户的集合 
  3. 创建映射文件
  4. 级联保存
    保存用户级联保存角色
    保存角色级联保存用户
  5. 级联删除(基本用不上)

四.多对多的其它操作

  1. 给用户选择角色
  2. 给用户改选角色
  3. 给用户删除角色
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值