手把手教你写个ORM(一)
这里准备把一个类似ibaties的半自动ORM的设计和实现过程一步步地剖析出来,供菜鸟参考,功能很简单,甚至我只能用简陋来形容了,不过把一些关键点破后,希望后浪们不用再花功夫摸索了。
为什么我们要重复发明轮子?因为不亲自经历一遍发明轮子的过程就无法发明出风火轮^_^
准备知识:
首先要会用C#,如果不会请先去书店买书。
要熟悉ADO.NET,我们不会去重头设计oledb,所以所有的操作最终都是ADO.NET去完成的
起码知道什么是XML,我们的配置文件依赖这个东西
最好会反射,如果现在发现以上提到的有不会的就去google搜索一番吧,google是最好的老师,除了教会我写程序,还教会了我如何做可乐鸡翅泡妹妹,God Bless Google。
在万事俱备的时候不要忘记在你的机器上安装VS2005,本着与时俱进的原则,我们还是放弃做1.1版本的了,毕竟范型可以让代码更加的简洁。
打开你的VS2005,新建一个项目,右键单击项目的属性,在名字空间里写上你的大名,好了,现在就要开始正式启程来完成你自己的ORM Framework了。如果你参照本文做出来了,恭喜,本年度最佳菜鸟非你莫属了。再次重申,在高手眼里这是个很弱质的重复发明的轮子,如果你发明过了,就不要看啦,浪费时间的。
好了,建好了项目也不要兴奋过头,我们现在开始来规划规划,俗话说,磨刀不误砍柴工,先谋后动才是王道。
首先,我们要确定这个Project的Scope,不要一开始就信心爆绷发誓要做个牛鼻轰轰天下第一宇内无双的东西出来,那样子的思想趁早打掉,我们只是实现一个demo而已。所以很多华而不实的东西都要去掉,我们用ibaties作为蓝本,所以我们需要对每个类提供一个配置文件,并且需要在配置文件作了修改的时候自动加载而不用重新启动服务。这里ibaties的配置文件我们觉得还是过于复杂,于是作出再次简化,我们只配置SqlMap,但是对象的映射我们通过Attribute在实体类里面配置,ResultMap也省了,怎么来还是怎么去吧。缓存机制还是要保留,毕竟要演示一下,LazyLoading就算了,需要AOP,我们暂时不去理会它,自己调用一次代码就load了,我决的比LazyLoading使用,太Lazy了不一定就简单。
OK,就这么简单,我们这里暂时不归纳需求,作为一个见习架构设计师来说需要多练习对需求的把握,这个就权且当作作业了。有兴趣的小菜可以写写看,明天我们继续设计
转载于:https://www.cnblogs.com/Alexander-Lee/archive/2007/01/23/hbh-orm01.html
手把手教你写个ORM(一)相关推荐
- 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫
系列教程 手把手教你写电商爬虫-第一课 找个软柿子捏捏 如果没有看过第一课的朋友,请先移步第一课,第一课讲了一些基础性的东西,通过软柿子"切糕王子"这个电商网站好好的练了一次手,相 ...
- 手把手教你写一个生成对抗网络
成对抗网络代码全解析, 详细代码解析(TensorFlow, numpy, matplotlib, scipy) 那么,什么是 GANs? 用 Ian Goodfellow 自己的话来说: " ...
- php注册程序,[PHP初级]手把手教你写注册程序 1
[PHP初级]手把手教你写注册程序 1 实例内容 在此教程,我们将通过写一个用户注册程序,学习以下内容: 数据的传输与获取 信息的验证 pdo方式操作数据库 事务处理 前台显示文件:index.php ...
- python k线合成_手把手教你写一个Python版的K线合成函数
手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...
- 手把手教你写Linux I2C设备驱动
手把手教你写Linux I2C设备驱动 标签:Linux 设备 驱动 详解 i2c 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http:/ ...
- 手把手教你写DI_2_小白徒手撸构造函数注入
在上一节:手把手教你写DI_1_DI框架有什么? 我们已经知道我们要撸哪些东西了 那么我们开始动工吧,这里呢,我们找小白同学来表演下 小白同学 :我们先定义一下我们的广告招聘纸有什么: 好,我们实现两 ...
- 手把手教你写DI_3_小白徒手支持 Singleton 和 Scoped 生命周期
在上一节:手把手教你写DI_2_小白徒手撸构造函数注入 浑身绷带的小白同学:我们继续开展我们的工作,大家都知道 Singleton是什么,就是全局只有一个呗,我们就先从它开始,这个多简单,我们找个字典 ...
- 手把手教你写一个spring IOC容器
本文分享自华为云社区<手把手教你写一个spring IOC容器>,原文作者:技术火炬手. spring框架的基础核心和起点毫无疑问就是IOC,IOC作为spring容器提供的核心技术,成功 ...
- 手把手教你写网站:Python WEB开发技术实战
摘要:本文详细介绍了Python WEB开发的基础入门.以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程.通过本文的学习可以快速掌握基于Django的Python WEB的开发 ...
最新文章
- html支持1080p,1080p完美支持
- java 数组降序_Java里的数组降序
- 看完阿逗比年度炫技大会,我什么都不敢信了
- 一个关于用户体验的思考
- c++ vs 输出log到窗口_欧冠豪门碰撞,尤文vs巴萨,曼联vs红牛
- 人人可懂的机器学习入门要点和阅读路径:学什么?怎样学?
- 使用TF lite 优化 MobileDet 目标检测模型部署
- HTML中元素的position属性详解
- 阿里巴巴编码规范java
- Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(7)
- php如何触发html,html想触发php函数可以吗?
- 新手使用GitHub客户端提交本地项目到GitHub网站详细步骤
- 《Javascript高级程序设计(第四版)》学习笔记(一)第1、2章
- 国笔手机输入法MTK支持的语言
- vue 检测ie版本_vue判断当前浏览器为IE低版本,给出升级提示;IE11及其他浏览器正常使用-Go语言中文社区...
- qq连连看java版_Java实战_仿QQ连连看
- 【c++】CTGU2022春校赛原题详解:出题人的大航海BFS
- 数理统计(matlab实现)
- 在ubuntu16.04下测试ffplay程序
- MySQL必知必会学习历程(一)