博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DIY.NETORM框架——总体分析
阅读量:6231 次
发布时间:2019-06-21

本文共 1450 字,大约阅读时间需要 4 分钟。

一、故事

      近些年一直开发MIS系统,用过PBVBC#  。如今学了半年的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仅仅是做了当中的工作。也不要认为这个东西是多么的高深,随着我们代码的不断推进。我们设计的不断完好。事实上我们能够发现。全部的代码都是基本技术的组合,仅仅是我们对于他的组合形式不熟悉,相信自己。框架我们也是能够写出来的!

附件(系列博客链接):

    

你可能感兴趣的文章
[转载][转帖]谈谈我对攻读计算机研究生的看法。。。大牛的文章,见解精深独到...
查看>>
使用Python进行AES加密和解密
查看>>
Unity_UIWidgets学习笔记03_组件_Image
查看>>
linux cat 命令详解
查看>>
转.给android设备安装busybox
查看>>
Docker swarm集群增加节点和删除节点
查看>>
将 年-月-日 封装成tree树状结构
查看>>
Maximum Depth of Binary Tree
查看>>
DFS
查看>>
UIImageView
查看>>
Dynamic CRM 2013学习笔记(二)插件基本用法及调试
查看>>
c# 报表练习笔记
查看>>
Spark学习之路 (七)Spark 运行流程
查看>>
POJ2667 Hotel(线段树区间合并)
查看>>
codeforces703D Mishka and Interesting sum(区间偶数异或)
查看>>
linphone-android 编译
查看>>
项目分布式
查看>>
股票数据调用示例代码php
查看>>
共享文件
查看>>
zabbix监控windows主机网卡流量
查看>>