面向领域模型的数据访问层的应用和关键技术研究

面向领域模型的数据访问层的应用和关键技术研究

论文摘要

本文的研究目标是实现一个基于领域模型的数据访问层的代码生成工具。该工具将作为一款数据建模(PowerDesigner)的子功能模块。在企业级的系统中,多层模块的划分有利于大型系统的部署和升级,而由于数据访问层处在系统访问数据库的核心层,所以它的代码设计好与坏,将直接影响系统的性能和稳定性。传统的数据访问层,它需要程序员手工书写代码,并根据用户需求设计表结构和数据访问层相关代码,往往在这里会花费更多开发时间和成本。但事实上,一个系统最关键的,也是最有用的是系统的业务逻辑层。如何快速设计出一个数据访问层,它的代码可以根据不同客户需求自动生成,那么对于不同的数据源,或者是客户需求变更,就可以将代码风险降到最低。对于客户需求,它的直接反应就是领域模型,所以本文正是基于这个特点,从领域模型出发,根据对象关系映射,进行了大量深入的研究,并分析出不同的映射情况下的代码生成规则。本文首先研究和比较了现有的企业级系统架构方案,并提供了生成代码流程和具体实施过程。然后,本文分析了基于模型的数据访问层的核心模块的具体细节和数据访问层的架构,最后提出架构性能实验的数据分析。在非中间表的关联方面,由于存在双向和单向问题,本文从一对多的双向关联的原型代码入手,逐步迭代完成其他几种关联类型的代码。其中,本文采用了“三层对象树”的算法,来防止当双向关联时死循环的问题。同时,提出了“Inverse反转模型”算法,以解决单向关联时,分步操作数据时,数据不一致的问题。在带有中间表的关联方面,本文根据大量实验,在保留现有一对多原型结构的基础上,添加了中间表数据的绑定流程,并通过“双重预防死锁算法”防止中间表的数据被重复操作。在继承方面,由于存在三种类型的映射关系,所以本文通过最简单的一种原型(每个表一个类的映射情况),采用“自身职责链”和“向上获取,合并重复”的原则,设计出可以同时满足多种情况的继承模型。为了保证对象实体数据和数据库中的数据一致,本文采用了“自适应分治删除”算法来防止删除时的死循环。在查询对象的时候,本文采用了查询构造器来构建对象表达式,并在数据层的核心部分创建查询语句和绑定参数,使得在数据访问层操作对象查询非常简单。本文的意义在于,由于数据访问层是面向领域模型的,所以,它简化了用户的开发流程和时间,用户无需和数据库打交道,而是更关注于上层的业务逻辑,使得架构更为清晰。一旦数据库发生变更,用户只需重新生成数据访问层即可。

论文目录

  • 摘要
  • ABSTRACT
  • 第1章 概述
  • 1.1 应用背景和问题的提出
  • 1.1.1 为什么要分层
  • 1.1.2 什么是三层架构
  • 1.1.3 为什么要提出数据访问层
  • 1.2 现状比较
  • 1.2.1 “数据访问层”现状比较
  • 1.2.2 想法的提出与改进
  • 1.3 研究内容的介绍
  • 1.3.1 领域模型
  • 1.3.2 PONO(Plain Object, dotNet Object)
  • 1.3.3 模型驱动构架(MDA)
  • 1.3.4 模型和元模型
  • 1.3.5 元对象机制
  • 1.3.6 PowerDesigner
  • 1.3.7 PowerDesigner 中的MDA
  • 1.3.8 对象/关系映射(O/R Mapping)
  • 1.4 算法问题的分析
  • 1.5 文章结构的介绍
  • 第2章 基于模型的数据访问层整体架构
  • 2.1 具体实施过程
  • 2.2 基于模型的数据访问层的核心模块
  • 2.2.1 基于层和包的整体架构设计
  • 2.2.2 数据访问层基础服务框架的架构设计
  • 2.2.3 系统配置及错误管理机制
  • 2.3 架构性能实验与比较
  • 第3章 O/R MAPPING下的数据访问类的实现
  • 3.1 基于元模型的 O/R MAPPING列表结构
  • 3.1.1 O/R Mapping 列表结构的特例分析
  • 3.1.2 O/R Mapping 列表结构设计
  • 3.2 对象与关系映射下的数据访问类的结构
  • 3.3 探究 SQL 语句的生成规则
  • 3.3.1 SQL 语句生成的基本规则
  • 3.3.2 SQL 语句生成的特例规则
  • 3.4 探究数据绑定/还原的生成规则
  • 3.4.1 数据绑定/还原的基本规则简述
  • 3.4.2 数据绑定/还原的特例规则
  • 3.5 探究关联问题的代理函数
  • 3.5.1 探究双向关联问题的代理函数
  • 3.5.2 探究单向关联问题的代理函数
  • 3.6 探究继承问题的代理函数
  • 3.6.1 每个类映射为一张表(One Class per Table)
  • 3.6.2 整个类层次结构映射为一张表(Table per class hierarchy)
  • 3.6.3 每个子类映射为一张表(Table per subclass)
  • 3.6.4 总结生成规则
  • 3.7 其他问题的代理函数
  • 3.7.1 一个类映射到多表
  • 3.7.2 ValueType 值映射
  • 3.8 查询构造器的实现
  • 第4章 抽象流程模型的研究与分析
  • 4.1 抽象流程模型的设计
  • 4.1.1 复杂模型归类
  • 4.1.2 设计抽象流程模型的步骤与关键点
  • 4.1.3 定义抽象挂钩点
  • 4.1.4 设计抽象流程模型
  • 4.2 INVERSE反转模型设计
  • 4.2.1 Inverse 反转模型概述及缘由
  • 4.2.2 Inverse 反转模型算法讨论
  • 4.3 具有双向关联关系的领域模型下控制死锁的算法
  • 4.3.1 死循环产生的缘由
  • 4.3.2 预防死循环的现有算法的讨论
  • 4.3.3 三层对象树
  • 4.3.4 采用三层对象树算法解决死锁的应用
  • 4.4 具有继承关系的领域模型下控制死锁的算法
  • 4.4.1 死循环产生的缘由
  • 4.4.2 预防死循环的算法研究
  • 第5章 结束语与展望
  • 5.1 本文工作回顾
  • 5.2 存在的不足和展望
  • 附录 A 缩略词表
  • 参考文献
  • 致谢
  • 作者攻读学位期间发表的论文
  • 相关论文文献

    标签:;  ;  ;  ;  

    面向领域模型的数据访问层的应用和关键技术研究
    下载Doc文档

    猜你喜欢