一、故事


近些年一直开发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框架——总体分析的更多相关文章

  1. RPC调用框架比较分析--转载

    原文地址:http://itindex.net/detail/52530-rpc-%E6%A1%86%E6%9E%B6-%E5%88%86%E6%9E%90 什么是RPC: RPC(Remote Pr ...

  2. 动态加载框架DL分析

    动态加载框架DL分析 插件化开发,主要解决三个问题1.动态加载未安装的apk,dex,jar等文件2.activity生命周期的问题,还有service3.Android的资源调用的问题 简单说一下怎 ...

  3. 基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍

    在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章会随着技术的探讨一直写下去,不过这个系列的文章,到这里做一个总结,展示一下整体基于MVC4+Ea ...

  4. ZK框架的分析与应用

    前言:本文是在下的在学习ZK官方文档时整理出来的初稿.本来里面有很多的效果图片和图片代码的.奈何博客园中图片不能粘贴上去,所以感兴趣的筒子们就将就吧.内容中,如有不好的地方,欢迎斧正! ZK框架的分析 ...

  5. spi驱动框架全面分析,从master驱动到设备驱动

    内核版本:linux2.6.32.2  硬件资源:s3c2440 参考:  韦东山SPI视频教程 内容概括:     1.I2C 驱动框架回顾     2.SPI 框架简单介绍     3.maste ...

  6. DIY客户端框架

    C/S类型的客户端做过好多轮了,在架构上每次都调整优化一部分,慢慢的形成了DIY的框架性东西. 可是最近这一看呢,已经不像MVC了,然后有一天看到了MVP概念,咦!很像.再一看,嗯,就该是MVP. M ...

  7. (转)dubbo框架基本分析

    原文地址: https://my.oschina.net/zhengweishan/blog/698591 Dubbo架构基本分析 1. dubbo简单介绍 1.1 dubbo是什么 dubbo是一个 ...

  8. 服务框架HSF分析之一容器启动

    大家平时都在用这个服务框架.简单阅读了下代码,了解其原理可以方便解决一些常见hsf的问题.限于篇幅,整个分析将分几个系列发布.第一篇将简单介绍Hsf的启动和各组件之间关系. 一.  Hsf总体架构 这 ...

  9. Volley框架源代码分析

    Volley框架分析Github链接 Volley框架分析 Volley源代码解析 为了学习Volley的网络框架,我在AS中将Volley代码又一次撸了一遍,感觉这样的照抄代码也是一种挺好的学习方式 ...

随机推荐

  1. PMBOK项目管理九大知识领域和五大流程 --美国IT项目管理硕士笔记(二)

    PMBOK 项目管理 九大知识领域和五大流程 PMI   Project Management Institute.PMI 是世界上最大的非盈利机构,是项目管理领域的领导者.PMI制定项目管理行业标准 ...

  2. C# 调用带有输出参数的分页存储过程

    一.创建带有输出参数的分页存储过程 use StudentMISDB go select * from Course alter table Course go --update Course set ...

  3. 通过Maven将指定Jar包下载到指定的本地目录

    现在大家大部分都通过Maven等工具来管理包,但是特殊情况下还是需要将包下载到本地.我们可以通过maven命令来完成这个需求.创建一个pom.xml文件,文件内容如下: <?xml versio ...

  4. OpenTSDB监控

    OpenTSDB监控

  5. 计算型属性 vs 懒加载

    只实现 getter 方法的属性被称为计算型属性,等同于 OC 中的 ReadOnly 属性 计算型属性本身不占用内存空间 不可以给计算型属性设置数值 计算型属性可以使用以下代码简写 var titl ...

  6. C++调用Com

    需求:1.创建myCom.dll,该COM只有一个组件,两个接口:   IGetRes--方法Hello(),   IGetResEx--方法HelloEx() 2.在工程中导入组件或类型库  #im ...

  7. linux mysql设置远程访问

    >mysql -u root -p 选择进入mysql数据库use `mysql`; 查看所有存在的账号和地址.SELECT `Host`,`User` FROM `user`; 现在决定让ro ...

  8. 再读Android sqlite

    再读Android sqlite Android原生支持sqlite数据库操作,sqlite时轻量级关系型数据库,支持标准sql语句.Android对sqlite进行良好的接口封装来避免sql注入等安 ...

  9. Linux命令学习(2): scp和rsync基本用法与断点续传

    版权声明:本文为博主原创文章,未经允许不得转载. 引子 在平常的工作中,我经常需要在远程服务器和本地之间传输文件. 以前我都使用scp命令,直到今天因为网络中断,scp出现了stalled. 因为上传 ...

  10. 腾讯云:基于 Ubuntu 搭建 VNC 远程桌面服务

    基于 Ubuntu 搭建 VNC 远程桌面服务 前言 任务时间:5min ~ 10min 必要知识 本教程假设您已学习以下 Ubuntu 基本操作: 连接 SSH 执行命令 编辑文件 如果还没有掌握 ...