ModelMapper概述

NHibernate3.2版本号集成Mapping-By-Code(代码映射),其设计思想来源于ConfORM。代码总体构思基于"Loquacious"模式,而不是"fluent-interface"。

在NHibernate.Mapping.ByCode命名空间下。

Mapping-By-Code(代码映射)与其它映射方式不同,Mapping-By-Code是手动配置实体映射,编译映射并转换为HbmMapping对象, 调用Configuration类的void AddDeserializedMapping(HbmMapping mappingDocument,
string documentFileName)方法配置Configuration,其它映射(比如Fluent NHibernate、MyGeneration、Visual NHibernate等)实际上是调用AddXmlReader()方法后。反序列化为HbmMapping对象。然后再调用AddDeserializedMapping方法配置Configuration。

最后BuildSessionFactory。

Mapping-Path示意图例如以下:

ModelMapper架构

ModelMapper核心是配置领域模型映射,编译并转换为HbmMapping对象。依照其功能ModelMapper类有四个部分,各自是:

  • 特定映射(Specific Mapper)
  • Conformist映射(Conformist Mapping)
  • 事件拦截器(Events Interceptor)
  • 编译映射(CompileMapping)

特定映射(Specific Mapper)

特定映射(Specific Mapper),对特定的类或者特定的某个组件设置定制化映射。由Class、Subclass、JoinedSubclass、UnionSubclass、Component方法提供。

Conformist映射(Conformist Mapping)

Conformist映射(Conformist Mapping)是以Class-By-Class方式映射。然后增加ModelMapper类。

事件拦截器(Events Interceptor)

在每种映射行为前后,都定义了事件拦截器,能够通过事件拦截器定义约束。

从设计角度上看是对ModelMapper类提供了扩展性。

编译映射(CompileMapping)

把程序中的领域实体的映射编译并转换为NHibernate使用的HbmMapping对象。CompileMappingFor、CompileMappingForEach方法指定特定领域实体,CompileMappingForAllExplicitAddedEntities和CompileMappingForEachExplicitAddedEntity方法已经显式指定提供映射的实体。

结语

这篇文章首先了解NHibernate3.2新增的Mapping-By-Code(代码映射)的原理,兴许的文章以这篇文章为基础学习Mapping-By-Code各种映射。

最新文章

  1. 【Alpha】Daily Scrum Meeting第二次
  2. hive的使用02
  3. JVM-class文件完全解析-字段表集合
  4. (转)在mac上配置cocos2d-x开发环境
  5. 网站压缩数据 GZIP
  6. linux下休眠/待机命令
  7. android listiew适配器
  8. 啊上班的二号i将诶
  9. 2.MyBatis有代理增删改
  10. 【故障•监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe
  11. 团队作业4——第一次项目冲刺(Alpha版本)4.24
  12. 201521123001《Java程序设计》第7周学习总结
  13. Mybatis【一对多、多对一、多对多】知识要点
  14. [USACO 13NOV]No Change
  15. windows计划任务启动bat执行java文件
  16. [android] 利用广播实现ip拨号
  17. scrapy爬取知乎问答
  18. [转]Go语言中的make和new
  19. nginx源码安装教程(CentOS)
  20. Hibernate(二)

热门文章

  1. webdriver高级应用-js操作滚动条
  2. csa Round #70
  3. 九度oj 题目1376:最近零子序列
  4. iOS----闪退,无报错原因,经典解决方案
  5. SparkStreaming 编程指南
  6. IDA动态调试技术及Dump内存
  7. linux jenkins安装(四)
  8. 主机ping不通虚拟机,但是虚拟机能ping通主机
  9. [Codeforces Round #297 Div. 2] E. Anya and Cubes
  10. webRTC windows demo1(转)