关于orm实体映射的感想 (object /relational mapper )
what orm?object /relational mapper 【程序编程相关:asp.net验证码生成类(参考) 】
2005-05-29 njbaige/白鸽 于苏州 【推荐阅读:向DataGrid控件中添加ComboB】
目前在网络上大家可以找到好几种持久层,其实各个持久层的思想都是相同的,只是在实现的方式上,还有一些细节功能上有差异,每个持久层都有独特之处或是不足之处 【扩展信息:.net加密技术的应用(加密类代码参考)】
why orm 一般的数据库访问是建立于传统的数据库访问模型的基础之上,即是connection,command等对象,通过sql语句与数据库交互,并返回结果现在.net下面的数据库访问框架已经到了ado.net 时代,ado.net 的访问方式详见msdn的相关文档,这不是本文讨论的重点.但是要说明的是,在.net 环境下的数据访问,都得要与ado.net打交道,那个是最底层得东西,我们今天谈的数据库映射框架底层也是基于ado.net的访问模式,只是他们进行了很有效的封装是得对数据库的操作从传统的sql模式,转换为基于对象的模式.使业务逻辑与数据层分离,减少之间的藕合性,让系统开发对数据库透明
how orm
实体映射:将数据库中的实体(一般是一张表)映射为类,对数据库的操作就直接转换为对这些实体的操作:包括新,增,删,改等.采用实体的操作,会使我们对数据库访问时,更方便,减少很多不必要的代码关系映射:数据库中多个表之间会有相互的关系,怎样把这些关系也反映到映射好的类中这就是关系映射,不过相比实体映射,关系映射实现起来更难,这也是评估不同orm好坏的一个重要因素高级查询:在数据库操作中,用得最多的是数据获取(retrieve).查询条件也是很多样,会有关联查询的情况,获取的结果也是要定制的,而不是简单的每个表的所有字段.这点也是orm实现最关键的地方,各自实现的方式不同,而且有的用起来也很麻烦,不友好.感觉还不如直接采用sql语句来的方便.这点nhibernate继承了hibernate的长处,采用hql查询语言,功能最为强大.其他的orm 就不是很方便了.个人觉得还有必要保留sql语句接口,返回table对象也是有不错的.
事务处理:在数据可靠性要求很高的时候,需要引入事务.由于ado.net 中对事务的支持很好,所以在orm实现起来也是很棒的,一般的框架都支持这样的事务.
实体类与操作类的生成: orm说到底就是帮我们生成了一个功能强大的数据库访问类,里面包括实体对象类,实体操作类等,实现了这样的思想,在代码生成上也需要友好,方便才能为大众所用.所以一个优秀的orm框架需要搭配一个好的代码生成工具.目前一部分框架都有的,支持直接同数据库连接,选择要生成的数据表,直接生成cs文件,编译成dll文件,直接导入到工程中就能用啦,是不是很酷~(不过有的orm框架需要一些配置文件,也有生成的哦)
数据访问实现方式:对实体对象的获取,更新保存至数据库,在orm的底层都需要通过连接来实现(不管是sql连接还是oledb 连接,还是oracle连接 ),他们实现的方式也有不同这决定了我们在代码中的操作方式也不同.... 下一页