ORM框架的设计

(开头先从网上抄些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

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

  

时间: 2024-10-12 00:28:51

ORM框架的设计的相关文章

ORM框架SQLAlchemy与权限管理系统的数据库设计

SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用对象关系映射进行数据库操作,即:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果. 执行流程: 1.使用者通过ORM对象提交命令 2.将命令交给SQLAlchemy Core(Schema/Types SQL Expression Language)转换成SQL 3.使用 Engine/ConnectionPooling/Dialect 进行数据库操作 4.匹配使用者事先配置好的egin

c# 轻量级ORM框架 实现(一)

发布一个自己写的一个轻量级ORM框架,本框架设计期初基于三层架构.所以从命名上来看,了解三层的朋友会很好理解. 设计该框架的目的:不想重复的写增删改查,把精力放到功能实现上. 发布改框架的原因:希望给初学者一个参考,希望能给予好的建议,给自己一个展示机会. 在我开始之前,先说明一下,我对"软件工程学"概念东西几乎不通,最高文化程度:初二,所以不喜勿喷. 开始我的orm设计最底层 最底层的是一个DalBase,它是一个抽象的,实现了增删改查的基本操作. 它既然是一个抽象的,那么它的内部就

LitePal + Gson + Volley的ORM框架尝试方案

为了紧跟技术潮流,目前的项目开始采用ORM的思想进行重新设计. 数据库采用轻量级ORM框架LitePal,Json解析采用Gson,网络框架采用Volley. 如果只是单纯的将这些第三方框架引进来,事情就简单多了,但这样意义不大,所以我们就结合项目的需求探索这三者的结合方案. Volley的改造比较大,结合了OkHttp,在API方面采取了链式调用的方式,可以像这样写代码: Volley.url("").params("", "").done()

c# 轻量级 ORM 框架 之 DBHelper 实现 (三)

周末了比较清闲,把自己的orm框架整理了下,开源了. 已经做出来的东西通常感觉有些简单,一些新手或许听到"框架"一类的词觉得有些"高深",简单来说orm就是把ado的封装. 在介绍这个框架的第一篇博文,已经把DalBase介绍了一下设计思路,本篇的DBHelper对象也是给dalBase来用的,可以说框架的所有定义对象都是为了它. 这里起名叫DBHelper,因为我也是从写SQLHelper开始的,DBHelper只不过是所有类型对ado操作的各种方法的封装,所以本

ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.6

摘要:VB/C#.Net实体代码生成工具(EntitysCodeGenerate)[ECG]是一款专门为.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的程序代码基于OO.ADO.NET.分层架构.ORM及反射+工厂设计模式等.支持.Net1.1及以上版本,可用于Oracle.SqlServer.Sybase.DB2.MySQL.Access.SQLite.PostgreSQL.DM(达梦).PowerDesigner文件.Informix.Firebird.MaxDB.Exc

[连载]《C#通讯(串口和网络)框架的设计与实现》-3.设备驱动的设计

目       录 第三章           设备驱动的设计... 2 3.1           初始化设备... 4 3.2           运行设备接口设计... 4 3.3           虚拟设备接口设计... 6 3.4           协议驱动设计... 7 3.5           命令缓存设计... 17 3.6           数据持久化设计... 24 3.7           IO数据交互设计... 26 3.8           通讯状态设计..

高效快捷简便易用的基于JSP的框架 MVC+ORM框架- YangMVC

开发目的 @copyright 杨同峰 保留所有权利 本文可以转载,但请保留版权信息 本人高校教师,带着一门动态网站设计课程,前面讲HTML+CSS+DIV,后面将JSP+JDBC+Struts+Hibernate+Spring.对SSH的难用深有体会.从一个空白项目开始配置完SSH,需要20分钟.别吐槽,这还是熟练的情况下...如果你有模板当然binggo就好了.但... 这不是一个框架应该有的样子.框架应该使用简单.配置简单.代码简洁.总之,我思考了一个晚上后决定自己写一个MVC+ORM(数

基于java注解实现自己的orm框架

ORM即Object Relation Mapping,Object就是对象,Relation就是关系数据库,Mapping映射,就是说Java中的对象和关系数据库中的表存在一种对应关系. 现在常见的ORM框架比如Hibernate和mybatis,都是采用了ORM的方式,基本原则就是类-表(Table).属性-列(Column)这样的对应,所以一个对象就能表示数据表中的一行数据啦. 本文转自http://m.blog.csdn.net/woshisangsang/article/details

ORM 框架简介

对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的.面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统.对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据.内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系.因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象