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
第四步,返回结果。(如果是查询操作的话,则通过核心类转换成对应的对象或者集合再返回结果)