• 让一个类为其子类(泛意上的)执行DB映射

    • 一些对象肯定会出现在另一对象的上下文中.
    • 此时,使用另一对象的Mapper来执行第一个对象的映射,来简化映射过程.
  • 运行机制
    • 在DB持久化时,依赖者类依赖于所有者类.每个依赖者只能有一个所有者.
    • 活动记录和行数据入口
      • 依赖者类的映射代码都写在所有者中.
    • 数据映射器
      • 没有依赖者的映射器类,在所有者的映射器中完成依赖者的映射代码.
    • 表数据入口
      • 根本没有依赖者类.在所有者中完成对依赖者的处理.
    • 通常,加载一个所有者时,会把相关的依赖者加载.当该相关加载耗费很大时,会使用延迟加载.
    • 依赖者
      • 没有标识域.也就不用存储到一个标识映射中.
      • 不能通过ID由查找方法加载.从而没有依赖者的查找器,而仅存在所有者的查找器.
      • 一个依赖者也可能是另一个依赖者的所有者.此时,由主所有者控制整个依赖者层次结构.
    • 内存对象中,只有所有者和依赖者的依赖者才能够拥有指向依赖者的引用.
    • Db中,除了所有者表,和拥有所有者的表之外,其它表不能拥有依赖者表的外键.
    • UML中,使用组合来表示两者之间的关系.
    • 更新
      • 由所有者来完成对依赖者的写和保存.
      • 对依赖者的更新可以通过删除和插入来完成.该过程不需要分析(直接先删除,后插入).
    • 但是,对所有者是否变化的跟踪会变得复杂.
      • 所有对依赖者的改变都要标记所有者.
      • 方案:让依赖者恒定不变.
        • 这样,对依赖者的改变,都是先移除,再插入一个新的依赖者的过程.
        • 此方案简化了DB映射,但同时耦合了内存模型和数据库映射.
  • 使用时机
    • 当一个对象制备另一个对象引用时,一般是某个对象拥有一个对应的依赖者集合时,同时依赖者又没有后向指针时.
    • 同时,如果对象本身不需要ID时,使用它简化了对象的保持管理.
    • 需要满足的前置条件
      • 每个依赖者仅有一个所有者
      • 不能存在出所有者之外的对象拥有对依赖者的引用.
    • 它是一种简化DB映射的技术,同时会使得无法从外部引用依赖者.导致根所有者的查找机制很复杂.
    • 在使用工作单元时,不要使用它.
      • 工作单元不能控制依赖者.结果会出现孤立的不被跟踪的依赖者.

依赖映射 Dependent Mapping的更多相关文章

  1. TFS二次开发04——工作区(Workspace)和映射(Mapping)

    在前面几节介绍了怎样读取TFS服务器上的项目以及文件的信息,这一节将介绍怎么建立服务器和本地的映射(Mapping). 引用命名空间 usingMicrosoft.TeamFoundation.Cli ...

  2. ES 12 - 配置使用Elasticsearch的动态映射 (dynamic mapping)

    目录 1 动态映射(dynamic mapping) 1.1 什么是动态映射 1.2 体验动态映射 1.3 搜索结果不一致的原因分析 2 开启dynamic mapping策略 2.1 约束策略 2. ...

  3. 【IPC进程间通讯之三】内存映射文件Mapping File

    IPC进程间通信+共享内存Mapping                IPC(Inter-Process Communication.进程间通信).         文件映射(Mapping)是一种 ...

  4. 18.AutoMapper 之条件映射(Conditional Mapping)

    https://www.jianshu.com/p/8ed758ed3c63 条件映射(Conditional Mapping) AutoMapper 允许你给属性添加条件,只有在条件成立的情况下该成 ...

  5. 15. AutoMapper 之映射继承(Mapping Inheritance)

    https://www.jianshu.com/p/e4f05403bd13 映射继承(Mapping Inheritance) 映射继承有两个功能: 从基类或接口配置继承映射配置 运行时多态映射 继 ...

  6. 06.AutoMapper 之内联映射(Inline Mapping)

    https://www.jianshu.com/p/623655d7cb34 内联映射(Inline Mapping) AutoMapper在 6.2 以上版本将动态创建类型映射. 当第一次调用Map ...

  7. LR之配置端口映射(port mapping)

    1.那些协议需要配置 tools-recording_options-network-port mapping 2.定义端口映射 3.自动检测原理 4.特殊情况

  8. (18)zabbix值映射Value mapping

    1. 介绍 zabbix为了显示更人性化的数据,在使用过程中,我们可以将获取到得数据映射为一个字符串. 比如,我们写脚本监控MySQL是否在运行中, 一般返回0表示数据库挂了,1表示数据库正常,还有各 ...

  9. 映射器Mapping

    1)  org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping(核心) 将程序员定义的Action所对应的<bean& ...

随机推荐

  1. Oracle中删除重复的经典方案

    DELETE FROM Personnel WHERE ROWID < (SELECT MAX(P1.ROWID) FROM Personnel AS P1 WHERE P1.dup_id = ...

  2. 当调用List Remove 失效时 [C#] .

    有没有试过从一个集合里面移除一个对象之后,这个集合仍然留有这个对象?世界之大,无奇不有.稍有疏忽,便会导致这种奇怪的现象.现在让我们看看这个“不死”对象究竟是怎么一回事. 1.“不死”对象现身 这个问 ...

  3. oc-16-set,get方法

    S.h #import <Foundation/Foundation.h> /** 解决方案: 1.不用@public修饰 2.我们对象有访问和设置成员变量的两种操作 1>设置值 p ...

  4. win7+iss7的配置,以及如何在本地IIS服务器挂载一个网站

    虽然学过在XP安装IIs服务器和在IIS服务器挂载网站的东西,但是win7和XP的方式还是有许多不同的.废话不说直接进入正题 在本地安装IIS服务器 在IIS服务器中添加你的项目 将你项目的首页设置为 ...

  5. 时间管理-SMART原则

    制定目标有一个“黄金准则”——SMART原则.SMART是英文5个词的第一个字母的汇总.好的目标应该能够符合SMART原则.  S(Specific)——明确性 所谓明确就是要用具体的语言清楚地说明要 ...

  6. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 7.全局防护盲点的总结上篇

    0x01 背景 现在的WEB应用对SQL注入的防护基本都是判断GPC是否开启,然后使用addlashes函数对单引号等特殊字符进行转义.但仅仅使用这样的防护是存在很多盲点的,比如最经典的整型参数传递, ...

  7. ALM/QC OTA Field in Database(查询ALM数据库的字段)

    在使用ALM的OTA接口编写脚本的时候,通常会需要知道各个选项在数据库中对应的字段,才能通过脚本读取或写入数据.比如要获取test case的step内容,要在测试结束时将测试实际结果写回test s ...

  8. Winform下实现图片切换特效的方法

    本文实例讲述了Winform下实现图片切换特效的方法,是应用程序开发中非常实用的一个功能.分享给大家供大家参考之用.具体方法如下: 本实例源自网络,功能较为齐全.丰富!主要功能代码如下: using ...

  9. J2SE J2EE J2ME的区别

    J2SE J2EE J2ME的区别 J2SE J2EE J2ME的区别多数编程语言都有预选编译好的类库以支持各种特定的功能,在Java中,类库以包(package)的形式提供,不同版本的Java提供不 ...

  10. 【HTML5 4】《HTML5与CSS3权威指南》 step1 导读

    一.教程重点:以 HTML5和CSS3的新功能和新特性 为导向,辅之以 实战型实例页面 二.内容概况: 第1部分:详细讲解HTML5相关知识,包括 各主流浏览器对HTML5的支持情况. HTML5与H ...