ORM对象关系映射,对象即实体,关系即关系数据库表。ORM即实现从实体对象关系数据库数据的映射。
本质上就是将数据从一种形式转换到还有一种形式。它详细又有哪些表现呢。咱们一步步学习,一步步分析。
ORM攻克了什么问题?
想想曾经使用的三层开发,在D层对数据库的操作基本能够归纳为下面几点问题:
1、使用DataSet/DataTable填充返回数据。
DataSet的结构就相当于一张表,使用DataSet ,需要取得某一数据时是必需要知道表结构的(列名或者列的序号)。这不仅违反了三层分层的思想,也不符合面向对象的特点,由于DataSet是一个仅仅知道存储行和列的对象,而且不能像实体那样获取属性,也不能像DataSet加入方法。可是DataSet并非一无用处。它也算是神级的存在吧。使用方便,适合业务简单,小型的开发。
2、将DataSet/DataTable转化成实体及实体集返回(反射及泛型)。
攻克了面向对象的问题。但问题远不止如此。
3、反复的方法,除了sql语句和实体不同外。其它的都一样。
4、即使用了抽象工厂加反射,假设要更换数据库,还须要写一套其他数据库的D层。
综上所述,DataSet非面向对象的特点。sql语句使业务逻辑(包含D层)与数据库之间形成高耦合。使得代码复用性低,维护繁琐,更换数据库工作量大等等一些问题。
那有没有方法解决以上问题呢?——ORM
核心理念
来看看ORM核心理念:
1、简单:ORM以最主要的形式建模数据。比方ORM会将数据库的一张表映射成一个实体类。表的字段就是这个类的成员变量
2、精确:ORM使全部的数据表都依照统一的标准精确地映射成实体类,使系统在代码层面保持准确统一
3、易懂:ORM使数据库结构文档化。
数据库被ORM转换为了程序猿能够读懂的实体类,程序猿能够仅仅把注意力放在业务对象。
4、易用:ORM的避免了不规范、冗余、风格不统一的SQL语句,能够避免非常多人为Bug,方便编码风格的统一和后期维护。
.NET中的ORM框架
NHibernate。EntityFramework,这两种框架兴许博客在研究。他们也是对ORM的实现,而且包括了事务,缓存。延迟载入等等。
事实上对ORM很多其它的还是疑问:
1、ORM不用自己写SQL语句,可是一些复杂的,特殊的sql查询呢?
2、实体和关系怎样映射在一起的?
3、Attribute特性
4、Linq,Lambda表达式
小结
为什么用ORM已经说的非常明确了,对照曾经的开发以及维护的经历。ORM可以够给我们的优点非常多。ORM一步步深入研究中。
本文也是依据自己以往的开发经历和近期对ORM的研究总结的,新手入门,多多指正!