• Hibernate 关联映射(三)


    一、lazy = "true" 延时加载和及时加载;

      1、一对多关系 

         <set name="list" lazy="true" cascade="all" inverse="true">
                <key column="tid"></key>
                <one-to-many class="com.entity.Goods"/>
            </set>

      2、多对一

          <many-to-one name="type" class="com.entity.Type">
                <column name="tid"></column>
            </many-to-one>

      3、多对多

            <set name="users"  table="userproject" >
                <key>
                    <column name="pid"></column>
                </key>
                <many-to-many entity-name="com.entity.User">
                    <column name="uid"></column>
                </many-to-many>
            </set>

    二、cascade属性 级联属性

      none 当Session操纵当前对象时,忽略其他关联的对象。它是cascade属性的默认值
      save-update 当通过Session的save()、update()及saveOrUpdate()方法来保存或更新当前对象时,级联保存所有
      关联的新建的瞬时状态的对象,并且级联更新所有关联的游离状态的对象

      merge 当通过Session的merge()方法来保存或更新当前对象时,对其关联对象也执行merge()方法


      delete 当通过Session的delete()方法删除当前对象时,会级联删除所有关联的对象

      all 包含所有的级联行为

    三、inverse;只能出现在一方,对象间的关系由谁维护

      inverse属性指定了关联关系中的方向
      inverse设置为false,则为主动方,由主动方负责维护关联关系,默认是false
      inverse设置为true,不负责维护关联关系

      经验:
        1. 在建立两个对象的双向关联时,应该同时修改两个关联对象的相关属性
        2. 建议inverse设置为true

      cascade="all" 和 inverse="true" 就是给它所属的对应的对象增加的功能;

    <set name="list" lazy="true" cascade="all" inverse="true">
            <key column="tid"></key>
            <one-to-many class="com.entity.Goods"/>
    </set>
  • 相关阅读:
    浅谈纯文本&&富文本&&Markdown区别
    浅谈CSS图片base64编码技术
    postman测试请求API:方式post、上传文件file
    Antd版本V3-->V4迁移问题:初始化调整
    浅谈switch语句的技巧
    react路由传参
    react dangerouslySetInnerHTML用法
    SPA单页应用的2种类型分页技术(React、Vue等组件化开发)
    (3)re模块(正则表达式模块)
    (2)hashlib模块(加密算法模块)
  • 原文地址:https://www.cnblogs.com/newbest/p/9314488.html
Copyright © 2020-2023  润新知