论文摘要
本文的研究目标是实现一个基于领域模型的数据访问层的代码生成工具。该工具将作为一款数据建模(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 PowerDesigner1.3.7 PowerDesigner 中的MDA1.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 缩略词表参考文献致谢作者攻读学位期间发表的论文
相关论文文献
标签:领域模型论文; 懒加载论文; 级联操作论文; 数据访问层论文;