(开头先从网上抄些ORM的介绍)
什么是ORM?
ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射。ORM也可理解是一种规范,具体的ORM框架可作为应用程序和数据库的桥梁。这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
为什么需要ORM
面向对象的程序设计语言,代表了目前程序设计语言的主流和趋势,其具备非常多的优势,比如:
1、 面向对象的建模、操作。
2、 多态、继承。
3、 摒弃难以理解的过程。
4、 简单易用,易理解性。
但数据库的发展并未与程序设计语言同步,而且,关系数据库系统的某些优势,也是面向对象的语言目前无法解决的。比如:
1、 大量数据操作查找、排序。
2、 集合数据连接操作、映射。
3、 数据库访问的并发、事务。
4、 数据库的约束、隔离。
面对这种面向对象语言与关系数据库系统并存的局面,采用ORM就变成一种必然。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
结束
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ORM的核心目的?
是让我们不在关心数据库,只关心我们对象、集合这所有面向对象的知识点
如何自己动手设计一个ORM框架?
一共包含两个部分:
第一个,映射部分(提供可以让用户配置的xml文件)
第二个,框架核心部分(提供 API 供用户使用)
第一部分
映射部分,这一部分就称为ORM。负责对象与数据库表之间的映射,这一部分又分为三个部分。
第1部分,实体部分(Object)
第2部分,数据库部分(关系型数据库 RelationShip)
第3部分,映射部分(Mapping)
上图
那它们之间怎么去协作呢?
Mapping 部分去访问 Object 部分和 RelationShip 部分,然后完成它们之间的映射
怎么映射?
通过Mapping操作,通过xml文件映射对应的字段和属性。
第二部分
框架的核心部分,就是你接收到一个集合或者对象的操作
在经过你的核心类,这里面要做什么操作呢?
第一步,核心类根据你的映射规则去解析 XML 文件,匹配对象对应的表,对象属性对应表的列。
第二步,核心类根据对象的操作(增删改查)生成对应的 sql 语句。
第三步,核心类通过 ADO.NET 访问数据库,执行 Sql 语句。
第四步,返回结果。(如果是查询操作的话,则通过核心类转换成对应的对象或者集合再返回结果)
根据现在有的类,比如说你现在有 User 对象,而 User 对象对应一张 User 表,这时你发现是添加操作,就在核心类中构建 insert 语句,那么 insert 语句 insert 哪张表呢?根据对象和表之间映射关系取到对应的表,Values 哪些列的值呢?这时就从这个对象的属性中去拿,这个属性对应那个列,依次拿出,在通过核心类完成一条 sql 语句,通过核心类完成这么一个转换。最终这条 sql 语句通过我们的框架去请求一个具体的数据库完成操作。如何去请求?这里我们可以通过 ADO.NET 直接访问数据库,最后返回结果。
~~~~~~~~~~~~~~~~~~~~~~~~~~上图~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一步,核心类要根据你的映射规则去解析 XML 文件,匹配对象对应的表,对象属性对应表的列。
第二步,核心类根据对象的操作(增删改查)生成对应的 sql 语句。
第三步,核心类通过 ADO.NET 访问数据库,执行 Sql 语句。
1
第四步,返回结果。(如果是查询操作的话,则通过核心类转换成对应的对象或者集合再返回结果)