由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。

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

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

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

时间: 2024-10-11 22:47:04

由ORM谈数据持久化的相关文章

理解ORM和数据持久化

一,什么是ORM 对象关系映射(Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),用于在关系型数据库和业务实体对象之间作一个映射.从效果上说,它其实是创建了一个可在编程语言里使用的"虚拟对象数据库".说白了就是把关系型数据库封装成业务实体对象,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法. 对象关系映射(Object-Relational Mapping)提供了概念性的.易于

Unity游戏开发学习之路——数据持久化

数据持久化 谈到数据持久化,在Unity的游戏开发中十分重要的,不管是是在本地和服务器端,数据持久化都是我们学习的难点,数据持久化的技术有很多种,这里只选取几种,目前也是我所学到的,在接下来的时间里会陆续整理到这里. Part1:PlayerPrefs类 这是unity圣典中给出的, PlayerPrefs 游戏存档 Description 描述 在游戏会话中储存和访问游戏存档.这个是持久化数据储存,比如保存游戏记录. Editor/Standalone 编辑器 / 桌面平台 Mac OS 在M

数据持久化 技术比较

  [数据存储]coredata.sqlite.fmdb和sqlitepersistentobject 管理提醒: 本帖被 angellixf 从 OS X开发讨论区 移动到本区(2014-02-12) 分享类型:应用开发相关 在ios开发过程中,经常需要用到数据持久化工作.对于基本的配置信息等,NSUserDefault已经可以满足要求,但是对于大部分需要存储的信息,主要的方式有coredata建模或者sqlite写数据库的方法进行存储.现在针对coredata.sqlite以及常用的sqli

数据持久化编程学习总结

一.JDBC编程 1. 使用JDBC规范 在数据库编程方面,最先使用的数据持久化技术无疑是JDBC 可以说JDBC(Java Data Base Connectivity)是学习其它数据持久化技术的基础 Java中访问数据库使用的就是JDBC,基本操作有CRUD(Create-Read-Update-Delete) JDBC定义了数据库的连接,SQL语句的执行以及查询结果集的遍历,一般操作步骤如下: 1.      注册驱动:DriverManager.registerDriver(driver

高级数据持久化之coredata

一.概述 CoreData是一个用于数据持久化的框架,Core Data支持4种类型的数据存储:SQLiteStore, XMLStore, BinaryStore, InMemoryStore. 注意:CoreData大部分情况下是基于SQLite数据库进行数据管理的,所以以下全部是其基于SQLite数据库的内容,以后学到更多的管理方法在补充! Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,

Swift - 使用Core Data进行数据持久化存储

一,Core Data介绍 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成数据,也能够将保存在数据库中的数据还原成对象. 2,虽然其底层也是由类似于SQL的技术来实现,但我们不需要编写任何SQL语句,有点像Java开发中的Hibernate持久化框架 3,Core Data数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型. 4,与SQLite区别:只能取出整个实体记录,然后分解,

几种.NET平台数据持久化框架介绍

原文连接:http://yuxnet.blog.163.com/blog/static/164863495201131532223362/ 在.NET平台下,关于数据持久层框架非常多,本文主要对如下几种做简要的介绍并推荐一些学习的资源: 1.NHibernate 2.NBear 3.Castle ActiveRecord 4.iBATIS.NET 5.DAAB 附加介绍:DLinq 一.NHibernate 提起NHibernate,相信大家都不陌生,NHibernate来源于非常优秀的基于Ja

ios开发学习笔记--数据持久化之Core Data

数据持久化之CoreDate 一.     Core Data简介 Core Data是苹果公司为了实现数据持久化提供的一个框架,而不是一个数据库,提供对象-关系映射[ORM]的功能(将对象转化为数据,也能将保存在数据库的数据还原为对象). 虽然底层操作与SQLite相似,但是并不直接写SQL语句,而且只能整个取出实体记录,然后分解之后才能得到某个属性. Core Data能存储的类型:SQLite数据库.XML.二进制.自定义数据类型 一般情况下,Core Data的数据存在沙盒下的Docum

UI_19 数据持久化(本地存储)

一.数据持久化概述 数据持久化就是数据的永久存储.其本质是将数据保存为文件,存到程序的沙盒中. 1.数据持久化的方式 1.1 writeToFile:简单对象写入文件 1.2 NSUserDefaults:应用程序偏好设置1.3 Sqlite:轻量级关系型数据库,不能直接存储对象(NSData除外),需要用到一些SQL语句,先将复杂对象归档(对象->NSData) 1.4 CoreData:对象型数据库,实质是将数据库的内部存储细节封装 1.5 Plist文件 2.应用程序沙盒 每一应用程序都有