欢迎投稿

今日深度:

由ORM谈数据持久化,orm谈

由ORM谈数据持久化,orm谈


 

什么是ORM

         ORM(ObjectRelational Mapping)对象-关系映射,是随着面向对象的软件开发发展而产生的。ORM是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的虚拟对象数据库即将关系数据库在编程语言中以对象的形式出现。

 

为什么要用ORM

  1:直观上来说几乎在所有的面向对象程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象的,但是当对象信息发生改变的时候,我们需要把对象的信息保存在关系数据库中。这样程序员不仅仅要钻研业务逻辑和UI代码还要专注于SQL等数据库操作语句。ORM的出现让程序员在一定程度上摆脱了SQL,专注于业务逻辑等,让开发效率更高。

2:从O-R来看,除了1中所说方便操作之外,我们为什么要将关系型数据库转化为Object,DataSet不好么?

  我们知道Object是可以继承的,也是可以使用接口的,可以说Ralation转换成Object之后不仅仅是形式发生了变化,关键是让原来的Ralation有了面向对象的特性。

例如:我可以在程序中检测实体是否支持IVersionObject接口,如果支持,我们将自动做版本控制,而如果你给我一个DataSet,那我将无法检测(不要告诉我检测是否存在Version字段)。通过这个特性我们将可以自动化处理很多的事情。
又如,我设计了一个单据实体的基类,包含了SheetCode、SheetDate等等字段,然后我的OrderSheet继承自SheetBase,他们将自动获取到这些标准的字段,而且我的基础类可以自动帮助我处理很多统一的规则,使程序更加稳健和统一。而这个Relation的东西是非常难做到的。

 

数据持久化

         最近学习了微软的EF(EntityFramwork),作为ORM(Object Relational Mapping)框架在.net上的一种实现,在EF学习过程中有个很有意思的词-“数据持久化”,让我很不理解,都说EF实现了数据持久化,那么到底

什么才是数据持久化?

        数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称. 数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等---百度百科

       狭义的理解,持久化仅仅是指把对象数据永久保存在数据库中,广义的理解,持久化包括和数据库相关的各种操作。

       个人理解,狭义的数据持久化中的持久化是相对于“暂时”等概念来说的,数据在计算机中一般由两个存储地,内存为暂存,数据库可以理解为永存。这样来说之前开发中ADO.NET访问数据库也就是数据持久化,再延伸一点,所有与数据库有关的操作都可以看成数据持久化?(困惑于此,希望大家有不同理解,多多讨论指教)

       广义的持久化,就是像EF等技术,封装了数据访问细节,为大部分业务逻辑提供面向对象的API

为什么要持久化(广义)?

       持久化技术封装了数据访问细节,为大部分业务逻辑提供面向对象的API

通过持久化技术可以减少访问数据库数据次数,增加应用程序执行速度;

代码重用性高,能够完成大部分数据库操作;

松散耦合,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时只需修改配置文件而不用修改代码。

 

www.htsjk.Com true http://www.htsjk.com/shujukunews/7580.html NewsArticle 由ORM谈数据持久化,orm谈 什么是ORM ORM(ObjectRelational Mapping)对象-关系映射,是随着面向对象的软件开发发展而产生的。ORM 是一种程序技术,用于实现面向对象编程语言里不同类型系统...
评论暂时关闭