PHP下ORM的基本实现

服务端编程经常需要和数据库打交道,CRUD是基本的操作。数据对象是整个操作的中心,数据库的一条记录对应着一个数据对象的信息,ORM(对象关系映射)讲的就是如何优雅的把数据对象和CRUD结合起来。这里主要实现一个通用的ORM模块。首先看系统框图:

数据库记录到对象的转换中间有一个映射器,一方面映射器对数据库执行指令,另一方面抽象出一套接口供应用程序使用。在这里所有的数据对象都继承自Object类,即万物皆对象的原则。比如现在要做一个学校信息管理系统。数据库里面可能要存几个对象信息他们的关系可以如下表示:

简单的一个继承关系图。这里还有另外一组继承关系,当查找到多个对象数据的时候,需要几个链表来方便的遍历对象信息:

也非常简单,具体的接口图上没有给出。如,构建对象的工厂类。构建查询条件的组装器等。具体可以看这个基于MongoDB实现的信息管理系统ORM

end~

时间: 2024-08-27 23:54:08

PHP下ORM的基本实现的相关文章

Net框架下-ORM框架LLBLGen的简介(转载)

Net框架下-ORM框架LLBLGen的简介 http://www.cnblogs.com/huashanlin/archive/2015/02/12/4288522.html 官方网址:http://www.llblgen.com/

Django下orm学习 一对多

概念说明 ORM:关系对象映射的全称是 Object Relational Mapping, 简称ORM SQLAlchemy: 是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果. ORM方法论基于三个核心原则: 简单:以最基本的形式建模数据. 传达性:数据库结构被任何人都能理解的语言文档化. 精确性:基于数据模型创建正确标准化了的结构. django中遵循 Code

Net框架下-ORM框架LLBLGen的简介

>对于应用程序行业领域来说,涉及到Net框架的,在众多支持大型项目的商用ORM框架中,使用最多的目前了解的主要有三款: 1.NHibernate(从Java版移植来的Net版). 2.微软的EF. 3.还有就是今天提到的LLBLGen >ORM之间的性能比较 从上图的测试结果可以看出,传统的手动编写代码访问数据库,例如手动编写的ADO.NET,仍然是从数据库中取值的最快捷的方式,性能依然最好.而相比于三大ORM框架来说由于NH的功能庞大EF的次之,LLBLGen相较于来说性能最好.当然对比OR

ORM即 对象-关系映射(转自:微冷的雨)

ORM即 对象-关系映射: 将数据库中的数据关系表,映射为实体对象. 灵动思绪EF(Entity FrameWork) 作者: 微冷的雨  来源: 博客园  发布时间: 2013-01-22 16:28  阅读: 10119 次  推荐: 16   原文链接   [收藏] 很久之前就想写这篇文章了,但是由于种种原因,没有将自己学习的EF知识整理成一片文章.今天我就用CodeFirst和ModelFirst两种方式的简单案例将自己学习的EF知识做个总结. 在讲解EF之前,我们先来看下ORM ORM

ORM之一:适合我的ORM

一.常见开源ORM框架 比喻:Kerosene ORM,DbLinq,Dapper,DynamicQuery,elinq,glinq,NPoco,Relinq,EF,ServiceStack.OrmLite,IQToolkit,对于这些框架,在单表查询这块支持的还蛮可以,但是对于多表查询的那种语法,我真有点接受不了,总感觉怪怪的,直观感觉就是没有了linq语法的那种美感,请忽视我的挑剔与自不量力,纯属个人喜好. 例如: var cmd = link .From( x => x.Employees

ORM操作

今天闲来无事简单谈下ORM操作. 一:前言 1.什么是ORM ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法. 2.为什么会出现ORM思想 先从项目中数据流存储形式这个角度说起.简单拿MVC这种分层模式.来说. Model作为数据承载实体. 在用户界面层和业务逻辑层之间数据实现面向对象OO形式传递. 当我们

c++ 数据持久层研究(一)

C++ORM框架自动生成代码数据库 用过Java的都知道SSH框架,特别对于数据库开发,Java领域有无数的ORM框架,供数据持久层调用,如Hibernate,iBatis(现在改名叫MyBatis),TopLink,JDO,JPA……非常方便实用. 用过C#的同学们也都知道通过CodeSmith软件,生成微软的PetShop分层模式,达到数据持久层的代码,也非常方便. 那么我们用C++的怎么办,我们也是面向对象编程,在工作中也有数据库需要管理.我们需要完全手工去写那些重复性的代码吗? 特别我现

灵动思绪EF(Entity FrameWork)

参考页面: http://www.yuanjiaocheng.net/entity/mode-first.html http://www.yuanjiaocheng.net/entity/database-first.html http://www.yuanjiaocheng.net/entity/choose-development-approach.html http://www.yuanjiaocheng.net/entity/query-with-edm.html http://www.

Entity Framework 与 面向对象

说要分享,我了个*,写了一半放草稿箱了两个星期都快发霉了,趁着周末写完发出来吧. 文章分为五部分: 基础.类讲述的是用到的一些EF与面向对象的基础: 业务是讲怎么划分设计业务: 设计模式和工作模式讲述了在项目中用得比较多的通用的方法: 最后的项目迭代这次怎么迭代开发 现在有点晚了,我公司在山上,得赶着下山,没来得及审稿,所以有错误欢迎指正. 个人觉得有点赶,而且有点长,所以排列文本控制得不是很好,有待再继续补充或者修改. ======================分割线,专治强迫症,下面是半个