StepbyStep-构建自己的构建自己的ORM系列系列-数据访问层数据访问层
一、开篇
距离上篇《Step by Step-构建自己的ORM系列-开篇》的时间间隔的太久了,很对不住大家啊,主要是因为有几个系列必
须提前先写完,才能继续这个系列,当然我也在
写这几个系列的过程中,对ORM这个系列中的原来的实现的想法有了新的认识和改进,当然这些都不是说是很先进的思想或
者认识,也可能是大家见过的思路吧,希望后面我能在
写设计模式系列的过程中,穿插讲解ORM系列,当然我的这个构建的系列,也只能说是很简易的,自己平时开发个小应用工
具或者什么的,可能用他,因为是自己开发的嘛,毕竟使用起来还是比较顺手的!符合自己的操作习惯嘛。 当然我写这个系
列的过程中,也会有自己认识偏激的地方,或者思路不正确的地方,还请大伙多多指出和批评。我也是在我目前的项目中学习
到了很多的宝贵的经验,其实我们应该能看到ORM给我们提供的方便和不便之处,我们取其精华,剔除糟粕,不过这真的很
难。我其实对一些流行的ORM的底层实现,研究的不多也不深,像Nhibernate,我只是了解Hibernate,是当时从JAVA中了解
过来的,不深入,Castle框架倒是用过一段时间,EntityFreamWork,我也没有用过,只是象征性的下载最新版本,体验了下
AOP的方式,我感觉其实有很多的时候,我们使用AOP的方式,能够改进我们程序的灵活性。这块可能还需要大牛们多多指
点。 我理想的ORM是实现持久化的透明,这个怎么理解呢?就是说我在程序的开发中,我不想在业务代码中书写相应的持久
化操作,也不关心业务层中的去如何调用你的 ORM,去完成CRUD的操作。我只关心我的业务逻辑,这个有点像DDD(领域驱
动开发)里面的领域层了,只关心领域内部的业务逻辑,而不关心其他的东西,这样方便我们快速的抓住关注的东西,而尽量
让与领域无关的东西不要影响业务领域逻辑的实现。
二、摘要二、摘要
本篇主要开始讲述《Step by Step-构建自己的ORM系列-数据访问层》关于数据访问层的部分,其实前面也对这块的内容
有了一定的介绍了,其实本篇就是教你如何完成 ORM中的数据访问层的操作,这里是提供统一的数据访问方法的实现。当然
这里的操作还是主要集中在数据库的操作,包括如何根据实体对象返回实体的列表,包括生成SQL语 句的几类实现,还包括
一些实现后续的ORM的配置管理的维护,这里就是提供可视化的XML文件的配置,这个具体怎么来做呢?因为我们平时针对
ORM的使用,都是直接修改XML文件,我们可以提供一个可视化的界面,让那个用户配置这些相应的设置。通过这些配置,
我们可以实现数据库的平滑的迁移,缓存应用的配置,包括其他的一些相关设置信息。总体来说这些操作都可以依托于,我们
这里的数据访问层来完成。
我们来看看ORM中数据访问层的重要作用和地位吧:
上图我们知道,我们所有的相关功能的基础,都是基于数据访问层来做的,所以我们处理好这个层的相关逻辑后,后续的问
题就会比较容易开展。下面我们就会针对这些疑问开始一个个的解决我们的数据访问层应该提供的相关功能!大体的功能应该
有如下功能:
1、持久化的操作方法CUD。可以扩展提供创建表+其他的修改表等相关的自动脚本工具。提供持久化透明的方式。
2、提供缓存服务,将对象的相应映射信息缓存起来,这样后续执行生成语句等操作,效率上会是很大的提升。
3、我们在处理对象对于Update语句,应该能处理好只能更变化的信息,如果没有发生变化,那么我们是不是不用执行更新
操作了呢?减少数据库的操作次数。
4、提供基础的查询方法,以后所有的基于ORM上的查询基于这个查询进行扩展。提供持久化透明的查询方式。
5、并发和事务的控制。我们这里可能提供一个内部的版本号的方式来做,一旦修改过这个对象或者发生改变,任何时候的