什么是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。
● 通过持久化技术可以减少访问数据库数据次数,增加应用程序执行速度;
● 代码重用性高,能够完成大部分数据库操作;
● 松散耦合,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时只需修改配置文件而不用修改代码。