• 依赖映射 Dependent Mapping


    • 让一个类为其子类(泛意上的)执行DB映射
      • 一些对象肯定会出现在另一对象的上下文中.
      • 此时,使用另一对象的Mapper来执行第一个对象的映射,来简化映射过程.
    • 运行机制
      • 在DB持久化时,依赖者类依赖于所有者类.每个依赖者只能有一个所有者.
      • 活动记录和行数据入口
        • 依赖者类的映射代码都写在所有者中.
      • 数据映射器
        • 没有依赖者的映射器类,在所有者的映射器中完成依赖者的映射代码.
      • 表数据入口
        • 根本没有依赖者类.在所有者中完成对依赖者的处理.
      • 通常,加载一个所有者时,会把相关的依赖者加载.当该相关加载耗费很大时,会使用延迟加载.
      • 依赖者
        • 没有标识域.也就不用存储到一个标识映射中.
        • 不能通过ID由查找方法加载.从而没有依赖者的查找器,而仅存在所有者的查找器.
        • 一个依赖者也可能是另一个依赖者的所有者.此时,由主所有者控制整个依赖者层次结构.
      • 内存对象中,只有所有者和依赖者的依赖者才能够拥有指向依赖者的引用.
      • Db中,除了所有者表,和拥有所有者的表之外,其它表不能拥有依赖者表的外键.
      • UML中,使用组合来表示两者之间的关系.
      • 更新
        • 由所有者来完成对依赖者的写和保存.
        • 对依赖者的更新可以通过删除和插入来完成.该过程不需要分析(直接先删除,后插入).
      • 但是,对所有者是否变化的跟踪会变得复杂.
        • 所有对依赖者的改变都要标记所有者.
        • 方案:让依赖者恒定不变.
          • 这样,对依赖者的改变,都是先移除,再插入一个新的依赖者的过程.
          • 此方案简化了DB映射,但同时耦合了内存模型和数据库映射.
    • 使用时机
      • 当一个对象制备另一个对象引用时,一般是某个对象拥有一个对应的依赖者集合时,同时依赖者又没有后向指针时.
      • 同时,如果对象本身不需要ID时,使用它简化了对象的保持管理.
      • 需要满足的前置条件
        • 每个依赖者仅有一个所有者
        • 不能存在出所有者之外的对象拥有对依赖者的引用.
      • 它是一种简化DB映射的技术,同时会使得无法从外部引用依赖者.导致根所有者的查找机制很复杂.
      • 在使用工作单元时,不要使用它.
        • 工作单元不能控制依赖者.结果会出现孤立的不被跟踪的依赖者.
  • 相关阅读:
    查看版本号以及如何升级
    http协商缓存VS强缓存
    「JOISC 2012」星座(凸包)
    「科技」求欧拉数单项
    「科技」在线 O(1) 逆元
    「JOISC 2017 Day 3」自然公园(交互)
    「IOI 2021」分糖果(线段树)
    「EOJ 317A」击鼓传花(类欧)
    「CF 1483E」Vabank(交互,构造)
    「NOIP 2020」微信步数(计数)
  • 原文地址:https://www.cnblogs.com/robyn/p/3523815.html
Copyright © 2020-2023  润新知