DIY.NETORM框架——整体分析

一、故事

近些年一直开发MIS系统,用过PB,VB,C#  ,现在学了半年的java,早先听人说,.NET和
java一直就是互相借鉴,一起升级,都是为了让程序开发趋于简单,高校,而这不可避免就肯定用到框架,对java中很多框架的实现原理,我也比较感兴趣,在本系列的博客正,咱们将一起实现一个简单的.NET版
ORM框架。

有人会有疑问,网上有很多成熟的ORM框架,为什么不直接用,偏偏要自己做一个呢?

对于这个答案,是仁者见仁的问题,就好似建造大厦,如果他停留在会照着图纸建房子,他肯定是个工人,而如果他能了解图纸上的原理,那么他必然是一个管理者,当他了解原理且能自己画出一份图纸的时候,他就是设计师!

二,技术了解

1.什么是ORM?

ORM,即Object-RelationalMapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

2.ORM 优缺点

展开说说

优点:

(1),隐藏了数据访问细节。

“封闭”的通用数据库交互,ORM的核心。他使得我们的通用数据库交互变得简单易行,并且完全不用考虑该死的SQL语句。快速开发,由此而来。

(2),ORM使我们构造固化数据结构变得简单易行。

回想我们没有ORM的年代,我们要为每个表编写形形色色的sql语句,我们拿到的数据内容,要自己转换为对象,我们为了某个字段值写错的bug彻夜不眠,而现在,基本上所有的ORM框架都提供了通过对象模型构造关系数据库结构的功能。而这,“太好了!!!”。

缺点:

(1)牺牲性能:

无可避免的,自动化意味着映射和关联管理,代价是牺牲性能(早期,这是所有不喜欢ORM人的共同点)。现在的各种ORM框架都在尝试使用各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。

(2)查询语言:

面向对象的查询语言(X-QL)作为一种数据库与对象之间的过渡,虽然隐藏了数据层面的业务抽象,但并不能完全的屏蔽掉数据库层的设计,并且无疑将增加学习成本.

(3)复杂查询:

对于复杂查询,ORM仍然力不从心。虽然可以实现,但是不值的。视图可以解决大部分calculatedcolumn,case ,group,having,order by, exists,但是查询条件(a
and b and not c and (d ord))我们有些也要慎重考虑和重新编写sql语句!

总结:世上任何事情是完美的,任何优势的背后都隐藏着缺点,这是必然的。问题在于,我们是如何平衡他们的额。在简答业务的场合下,简单三成可能就是最佳选择,而在某些业务逻辑复杂,开发团队庞大的项目中,ORM却又是个不得不考虑的问题,具体怎么办?就看你怎么衡量,没人说用了ORM就不让底层人员写sql语句了…………

三,模块设计构想

四、本篇总结

本次简单讲述了ORM实现的基本思路分析及ORM框架使用的优缺点及在项目中如何合理的分析与应用。我们用ORM框架是来解决问题,但是,不是什么问题都是一种框架可以解决的,数据库的封装,ORM只是做了其中的工作,也不要觉得这个东西是多么的高深,随着我们代码的不断推进,我们设计的不断完善,其实我们可以发现,所有的代码都是基本技术的组合,只是我们对于他的组合形式不熟悉,相信自己,框架我们也是可以写出来的!

附件(系列博客链接):

1,DIY.NETORM框架——整体分析

DIY.NETORM框架——整体分析

时间: 2024-11-06 09:42:11

DIY.NETORM框架——整体分析的相关文章

DIY.NETORM框架——技术储备(1)Attribute

1.他是什么 ? 首先,我们肯定Attribute是一个类,下面是msdn文档对它的描述: 公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为. 其实特别简单:Attribute就是一种"附着物",就像超市商品上贴的标签.这些附着物的作用是为它们的附

DIY.NETORM框架——总体分析

一.故事 近些年一直开发MIS系统,用过PB,VB,C#  .如今学了半年的java,早先听人说,.NET和 java一直就是互相借鉴.一起升级.都是为了让程序开发趋于简单,高校,而这不可避免就肯定用到框架,对java中非常多框架的实现原理.我也比較感兴趣,在本系列的博客正,咱们将一起实现一个简单的.NET版 ORM框架. 有人会有疑问.网上有非常多成熟的ORM框架,为什么不直接用.偏偏要自己做一个呢? 对于这个答案.是仁者见仁的问题,就好似建造大厦,假设他停留在会照着图纸建房子,他肯定是个工人

NET架构设计、框架设计系列文章总结

NET架构设计.框架设计系列文章总结 从事.NET开发到现在已经有七个年头了.慢慢的可能会很少写.NET文章了.不知不觉竟然走了这么多年,热爱.NET热爱c#.突然想对这一路的经历进行一个总结. 是时候开始下一阶段的旅途,希望这些文章可以在发挥点价值作用. 架构设计: ElasticSearch大数据分布式弹性搜索引擎使用 (推荐) DDD实施经验分享-价值导向.从上往下进行(圈内第一个吃螃蟹DDD实施方案)(推荐) 软件工程-思考项目开发那些事(一)(推荐) SOA架构设计经验分享-架构.职责

【JavsScript】JavaScript MVC 框架技术选型

你很喜欢Gmail和Trello之类的单页面应用,但是不太确定该从何开始.也许你的JavaScript代码是如此的杂乱无章,以致于你很想在下一个项目上尝试下JavaScript MVC库和框架,却苦于没有头绪?我正在撰写一本单页面应用的书,所以我阅读了大量网上的相关资料.在这里我尝试提供一些看法,希望可以帮助你下决定. 简介 这里讨论的是时下最热的框架,AngularJS.Backbone.Ember和Knockout.同时提到了Batman.CANjs.Meteor和Spine,但是没有详细展

2、基于wsgiref模块DIY一个web框架

一 web框架 Web框架(Web framework)是一种开发框架,用来支持动态网站.网络应用和网络服务的开发.这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法.web框架已经实现了很多功能,开发人员使用框架提供的方法并且完成自己的业务逻辑,就能快速开发web应用了.浏览器和服务器的是基于HTTP协议进行通信的.也可以说web框架就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率. 二 wsgiref模块 最简单的Web

【DIY系列】动手实现Struts2框架(一)原理分析

一.struts概念 struts2是一款体现关注点分离思想的架构. struts2将我们web开发中的各个需要处理的细节都封装到了拦截器中(Interceptor),每个拦截器负责自己独立的功能. 例如:参数拦截器(params),令牌拦截器(Interceptor-stack) 我们也可以指定自己的拦截器来拓展struts2的功能(自定义拦截器) 二.struts2的特点 1.关注点分离/解耦 把变化点错落有致的封装在软件系统的不同部分. 系统的一个部分发生了变化,不会影响到其他部分 即使需

MyFeiQ--项目整体分析,框架整理

头文件说明: FeiQDlg.h 主对话框类头文件 GroupBroadcast.h 多播组类头文件 UserList.h 用户链表类头文件 ListenSocket.h 侦听接口类文件 ChatSocket.h 聊天接口类文件 RecFileSocket.h 接受文件控制头文件 SendFileDlg.h 发送文件控制头文件 用户间关系及行为: 文件发送记录管理 用户活动 (1) 用户上线 (1)广播 我是谁谁谁,我上线了,谁在线上 (2) 接收好友信息,刷新好友列表 (3)监听新用户上线信息

Spring事务管理--多个ORM框架在使用时的情况分析

公司的项目已经接近尾声了,总结一下项目中用到的技术,我发现项目中的有些东西还是挺模糊的,只是知道这么用就行了.并不清楚其中的原理.由于公司的项目比较老,是7年前的一个项目了,中间一直有人在维护,也是在这个过程中不断融入了新的东西,比如就项目的持久化这块来说,就用了ibatis.mybatis.hibernate.spring JDBC四种混合的框架.究其原因只能说是历史遗留问题,就不做过多的解释了.但是这么多持久化的框架如何协同工作的,尤其是事务的控制,一个系统中使用如此多的持久化框架是,他们是

[自娱自乐] 4、超声波测距模块DIY笔记(四)——终结篇·基于C#上位机软件开发

前言 上一节我们已经基本上把超声波硬件的发射和接收模块全部做好了,接下来我们着手开发一个软硬结合的基于C#的平面定位软件! 目录 一.整体思路 二.效果提前展示 2-1.软件部分展示 2-2.硬件部分展示 三.基于C#的客户端软件说明 3-1.整体框架介绍: 3-2.部分技术细节介绍 3-2-1.串口操作 3-2-2.JiSuan函数说明及核心算法介绍 四.阶段小结 五.相关链接 一.整体思路 >_<" 如下图,利用我们上三节开发的超声波发射与接收设备构成一个:2固定接收头+1可移动