分类筛选
分类筛选:

关于框架类研究生毕业论文范文 与轻量级ORM数据访问框架SqlBuilder.NET的设计和实现相关论文范文

版权:原创标记原创 主题:框架范文 类别:专科论文 2024-03-18

《轻量级ORM数据访问框架SqlBuilder.NET的设计和实现》

该文是关于框架类论文写作参考范文跟SqlBuilder.NET和轻量级和框架类论文写作参考范文。

摘 要:基于ORM 思想,结合Nhibernate 与NBear 的优点,提出了一种轻量级ORM 数据访问框架SqlBuilder.NET,旨在为通用数据访问提供完整的解决方案.Sqlbuilder.NET 基于C# 语言编写,主要由OracleSqlBuilder、DBOperation 和SqlObjectMarker构成.Sqlbuilder.NET 具有一个事务一个日志列表、特殊字符的编解码、查询结果多种类型输出和组件间的松耦合的特性,实现了数据新增、更新的对象化操作及对象化的复杂查询语句生成等功能.

关键词:SqlBuilder.NET;数据访问;ORM;NHibernate;Nbear

中图分类号:TP393 文献标志码:A 文章编号:1008-1739(2018)03-70-3

0 引言

在应用软件项目开发中,数据访问必不可少.为了便于系统的开发维护,根据“高内聚、低耦合”的思想,通过分离数据访问层与业务逻辑层实现.因此,可以设计独立的数据访问构件,在不同的项目中复用.

目前比较流行的.NET 数据访问ORM 框架有Nhibernate、Spring.NET 及Nbear 等[1-3],通过项目实践发现,这些框架在实现其高扩展性、快速开发及良好的通用性的同时,也会失去一定的灵活性和性能,显得过于臃肿,这正是Sqlbuilder.NET 产生的原因.

1 主流数据访问ORM 框架比较

在SqlBuilder.NET 设计前,先对现有主流.NET 平台下的ORM 框架进行分析:

① Nhibernate:完整的ORM 框架[4],功能强大、通用性强,而且有很多辅助工具;缺点就是配置比较多、性能低,执行效率不理想.

② NBear:完整的ORM 框架,实现了强类型数据库查询语法[5],提供代码生成工具,性能较高;缺点是配置复杂,开发时很容易出错,最关键的是框架很久未更新.

③ IBatis:优点是简单、实用、功能完整、效率高及运行稳定,SQL 和代码分离,提高了可维护性;缺点是配置文件多,查询条件麻烦[6].

2 SqlBuilder.NET 的设计思想

通过经验总结不难发现,数据库的写操作中Insert、Update和Delete 一般为单表操作,读操作Select 经常会有联表操作,形式多样,因此在设计框架时,写操作可以采用对象操作的方式实现数据库的操作,例如,Insert.Object(User)就可以将User对象的数据写入到数据表中.读操作则分为2 种情况,一种是在事务操作中需要返回对象类型或对象数组类型,便于业务逻辑编码;另一种则只是为了将数据显示给用户,只需返回非对象数据类型.

因此,Sqlbuilder.NET 在基于ORM 思想的同时,结合了Nhibernate 与NBear 的优点,既实现了Nhibernate 类似Se(Object)插入数据的简便操作,又实现了类似NBear 对复杂查询语句的对象化操作,甚至在复杂语句的支持度上比NBear还要强大.由于目前开发针对的都是Oracle 数据库,因此SQL语句对象化方面针对Oracle 写了很多函数,可以使用Oracle的很多特性.

3 SqlBuilder.NET 的构成

Sqlbuilder.NET 是基于C# 语言编写的轻量级对象化ORM 数据访问构件,实现了类似LINQ 的数据库查询语法,可以像使用一个.NET 类的方法一样生成SQL 语句并访问数据库,由项目驱动开发而成,通过不断地重构和增加功能,目前已经趋于稳定.

Sqlbuilder.NET 没有XML 映射文件,在性能与开发效率上做了一定的取舍,但是对性能的影响并不是很大.另外SqlBuilder.NET 的设计思想避免了对象间的复杂关系,因此,Sqlbuilder.NET 虽然牺牲了一定的开发效率,却在性能上带来了质的飞跃.

Sqlbuilder.NET 主要由以下三部分组成:

① OracleSqlbuilder:采用对象的形式生成标准SQL 语句,此组件包含了Oracle 数据库的一些特性函数,例如“FORUPDATE”锁机制;

② DBOpertion:目前实现了对Oracle、SqlServer、MySql 和Access 数据库的增删改查(查询包括分页查询)、事务及存储过程等操作,可以通过XML 配置文件实现数据库的切换,而无需更改代码;

③ SqlObjectMarker:主要是将数据库的表生成为C# 实体对象,其中表字段对应对象的属性,还有用于OracleSqlbuilder构建SQL 语句的特殊字段.

4 SqlBuilder.NET 的特性

SqlBuilder.NET 在具有部分ORM 框架的特性(事务、异常)的同时,还具有以下特性:

① 一个事务一个日志列表:大部分ORM 框架的日志系统都是链式的,没有分组,而SqlBuilder.NET 则会一个事务对应一个SQL 列表,SQL 列表中包含SQL 执行后影响的行数或者返回结果的行数,提供了日志接口,可以根据系统需求写入数据库或者文件中.

② 特殊字符的编解码:SqlOracleSqlBuilder 在生成SQL 语句时会对数据中的特殊字符进行编码,在DBOpertion 访问数据库返回数据时进行解码.不仅保证了用户的输入意愿,同时防止了危险字符对系统的威胁,还有就是该功能对于开发人员透明.

③ 查询结果多种类型输出:支持将查询结果输出为Datatable、Dataset 及Json(String)等

④ 组件间的松耦合:SqlOracleBuilder 与DBOpertion 松耦合,2 个组件可以根据项目的实际需要独立使用,对于2 个组件有关联的地方则可以通过配置解耦.

5 SqlBuilder.NET 的设计实现

由SqlObjectMarker 连接数据库将数据表生成特定的C#实体对象(数据表与实体对象一一对应,没有了ORM 框架对象之间的关联),OracleSqlBuilder 通过实体中的字段构建对象化SQL,并解析成标准SQL 语句,最后DBOpertion 与数据库通信通过SQL 语句返回数据,如图1 所示.

5.1 OracleSqlbuilder 的设计实现

OracleSqlBuilder 主要使用了泛型编程和反射机制,其过程就是将C# 类型转换成相应SQL 的特定类型,调用不同类的不同方法实现SQL 语句的拼接,从而形成标准的SQL 语句.OracleSqlBuilder 提取了数据表的通用属性和方法,比如数据表的表名、别名及序列等,形成ModelBase 类,所有的数据库实体对象将继承ModelBase.图中User 实体对象继承自Modelbase,由SqlObjectMarker 生成.Select、Insert、Update、Delete 可以依据User 表生成相应的SQL 语句,它们是由含有不同业务逻辑功能的类组成的,其类的分类主要依据SQL 语句的关键字封装而成,比如“Group By”及“Order By”等.

其中TableField 类是OracleSqlBuilder 的重要组成部分,负责字段的各种SQL 函数(如SUM、Distinct 和Max 函数)、赋值、运算以及复杂语句中子语句的生成等.

5.2 DBOpertion 的设计实现

DBOpertion 采用了设计模式中的抽象工厂模式,基于ADO.NET,同时结合反射+ 配置文件实现数据库访问,其中数据库的连接字符串与数据库类型可以在配置文件中配置,设计UML 图如图2 所示.

IDBOperation 中定义了数据库操作的通用接口,包括数据库连接的打开关闭、SQL 语句执行、存储过程执行及事务处理等.OracleOperation、AccessOperation、MySqlOperation 和Sql-ServerOperation 实现了IDBOperation 接口,DbOper 则通过反射与配置文件相结合的设计思想实现面向IDBOperation 的接口编程.

由于解除了ORM 框架中对象间的复杂关系,DBOpertion可以依据业务逻辑选择不同的返回类型,例如复杂查询,没有必要返回实体列表,而只需返回DataTable 类型的数据,减少数据到实体的转换;在业务逻辑编写时需要根据数据做不同的操作,那么就可以返回实体对象,整体上可以极大提高系统的性能.

5.3 SqlObjectMarker 的设计实现

SqlObjectmarker 实体对象生成工具采用C/S 模式开发,数据库相关配置采用XML 配置文件,便于一次配置和团队开发.SqlObjectMarker 可以自动获取指定数据库中的表及其注释,生成的实体类会根据数据库中的注释加入C# 注释,便于开发时的自动提示,提高开发效率.

5.4 SqlBuilder.NET 的不足

由于数据表与实体是一一对应的关系,并且没有XML 映射文件的支持,因此在数据表发生字段变化的时候需要修改实体对象文件,造成框架的不灵活.当然框架也会存在其他的不足之处,每个框架的存在都会有它的优势和不足,都会在性能与功能上做一些取舍.

6 结束语

SqlBuilder.NET 作为一个轻量级的数据访问框架,其设计初衷就是为了减小开发的复杂度,因此后续的应用中,将继续保持简单、实用的设计理念,不会为了追求通用性而变得臃肿.希望该框架能够在以后的应用开发中继续发挥作用并接受磨练,使其更加稳定、实用.

参考文献

[1] 李斌勇,李庆.基于NHibernate 的ORM 映射机制研究[J].计算机技术与发展,2009,19(7):32-34.

[2] 潘立武,张建平.基于NBear 企业级应用设计与开发[J].电脑编程技巧与维护,2009(13):28-33.

[3] 欧勤坪,余建桥.基于SpringMVC+iBATIS 框架的生物信息数据库的设计与实现[J].西南大学学报(自然科学版),2008,30(11):142-145.

[4] 刘冬.NHibernate 从入门到精通系列(1)[EB/OL].(2011/2/14)[2018-1-1]. http://www.cnblogs.com/GoodHelper/archive/2011/02/14/nhiberante_01.html.

[5] NBear Google Group.NBear 常见问题集[EB/OL].(2006/12/13)[2018-1-1] https://www.cnblogs.com/fengmk2 /archive/2006/12/13/590447.html.

[6] PatrickLiu.Net 环境下比较流行的ORM 框架对比[EB/OL].(2016/10/25) [2018-1-1].http://www.cnblogs.com/PatrickLiu/p/5995592.html.

框架论文参考资料:

论文的框架

论文框架

论文基本框架

论文理论框架

论文框架怎么写

毕业论文框架

此文结论,上文是一篇适合不知如何写SqlBuilder.NET和轻量级和框架方面的框架专业大学硕士和本科毕业论文以及关于框架论文开题报告范文和相关职称论文写作参考文献资料。

和你相关的