什么是ORM?
ORM(Object-relational mapping)对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
简单的说,ORM是通过使用描述性对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
为什么用ORM
在程序开发中,数据库保存的表、字段与程序中的实体类之间是没有关联的,在是实现持久化时就不方便了。
那么,如何实现持久化呢?一种简单的方案是采用硬编码的方式,为每一种可能的数据库访问操作提供单独的方法。这种方案存在的不足:
1、持久化层缺乏弹性。一旦出现业务需求变更,就必须修改持久化层的接口。
2、持久化层同时与域模型与关系数据库模型绑定,不管域模型还是惯性数据库发生变化,都要修改持久化曾经的相关程序代码,增加了软件的维护难度。
ROM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。
ORM的三个核心原则:
1、简单:以最基本的形式建模数据
2、传达性:数据库结构被任何人都能理解的语言文档化
3、精确性:基于数据模型创建正确标准化了的结构
ORM优缺点
优点
1、开发效率更高
2、数据访问更抽象、轻便
3、支持面向对象封装
缺点
1、降低程序的执行效率
2、思维固定化
从系统结构上来看,采用ORM的系统一般都是多层系统,系统层次多了,效率就会降低。ORM是一种完全面向对象的做法,而面向对象的做法也会对性能差生一定的影响。
在我们开发系统时,一般都会有性能问题。性能问题主要产生在算法不正确和与数据库不正确的使用上。ORM所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和数据的加工处理上,如果用上了ORM,程序员和有可能将全部的数据提取到内存对象中,然后再进行过滤和加工处理,这样就容易产生性能问题。
.Net中常用的ORM框架
SqlSugar(国内)
Dos.ORM (国内)
Chloe (国内)
StackExchange/Dapper (国外)
Entity Framework (EF) (国外)
NHibernate (国外)
ServiceStack/ServiceStack.OrmLite (国外)
linq2db (国外)
Massive (国外)
PetaPoco (国外)
网友评论