在上一章,我们介绍了queryphp框架的hello world,并对queryphp框架有了大致的了解。这一章,我们将解释ORM。对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,php利用__set __get __call等方式使用,这也同时暗示者额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。
更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要比维护手写的方案要少;而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。
数据类型映射模式
1.1简单数据类型模式:建立UML和关系型数据库中简单数据类型的映射表以指导映射。
1.2枚举数据类型模式:每种枚举类型对应一个表,只有一个列(_EnumLiteral)表示枚举值。
1.3基于类的数据类型模式:使用外键约束,将基础列与基于类的类型实例相关联。
类映射模型
每个类对应一个表。单值属性、多值属性、继承关系可以用下述方法映射,而引用属性将在关联映射模式中提到。
2.1单值属性模式:是cardinality的上界为1的属性,映射到类所对应的表的列上。若其下界也为1(必须有的属性),列属性为NOT NULL。
2.2多值属性模式:每个多值属性映射成一个独立的表,使用外键连接到类所对应的表上。
2.3继承模式:每加入一个类的实例时,根据其继承关系自顶向下生成每个类的对象,这些对象具有相同的ID(根对象对应记录的主键)。
删除对象实例时,自底向上删除数据。遇到从中间删的情况怎么办?多重继承怎么处理?
关联映射模式
3.1一对一关联模式:在关联两端各加一列。
3.2一对多关联模式:和3.1一样。如果多这端是有序的,还需加入一列表示序号。
3.3多对多关联模式:将关联单独作一个表。
一般有人说ORM有什么用,喜欢写sql这类
ORM在数据建模,领域设计方面很有用。
比如:
echo $supply->get(5)->Books->classname;
//自动取得supply和books关联中内容
如果用sql怎么写,先取得$supply中的值,先然后再写sql取得books中classname
$result=mysql_query(select * from supply where id=5)
$row=mysql_fetch_array($result);
mysql_query(select * from book where supplyid=$row[supplyid]);
$books=mysql_fetch_array($result);
大概这样子,虽然功能相同,但是在做数据建模时候可以不是这样子想的,这样受到干扰太多了,在做领域设计时候,也很不好看。
目前ORM基设计完成,以后不断在优化程序性能和使用方法尽量避免接触到真实表操作和数据库操作。这些操作将会在模型配置文件中完成这样完成程序后,再改动数据库或表不完影响程序,比如原来由mysql改成sqllite也不会修改程序,程序员只要注重于数据模型操作,不需要知道数据来源。
分享到:
相关推荐
本文主要介绍Python使用ORM框架SQLAlchemy操作Oracle数据库。 1. 安装Oracle Instant Client 2. 安装依赖库 使用以下命令来安装SQLAlchemy和cx_Oracle库: pip install SQLAlchemy pip install cx_Oracle 3.创建...
noear::微型ORM框架(支持:java sql,xml sql,annotation sql;事务;缓存;监控;等...)可以嵌入到JVM脚本引擎(js, groovy, lua, python, ruby)及GraalVM支持的部分语言。0.2Mb(且是功能完整,方案丰富;可极...
Maven坐标:org.springframework:spring-orm:5.0.8.RELEASE; 标签:springframework、spring、orm、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...
### Hibernate框架ORM的实现原理详解 #### 一、ORM概念及意义 **ORM**,即**对象关系映射**(Object Relational Mapping),是一种程序技术,用于将关系型数据库中的数据映射到对象上,以便于程序员能够以面向对象的...
- Sugar ORM:简单易用,无需编写SQL,只需定义实体类并添加注解即可实现ORM映射。 - ActiveAndroid:提供了Model、Table和Column注解,支持数据库初始化和自动迁移。 - OrmLite for Android:强大的ORM库,支持...
Maven坐标:org.springframework:spring-orm:4.2.2.RELEASE; 标签:springframework、spring、orm、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...
Maven坐标:org.springframework:spring-orm:5.0.8.RELEASE; 标签:springframework、spring、orm、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...
Hibernate 是一个流行的Java持久化框架,它提供了对象关系映射(ORM)功能,使开发者能够更轻松地操作数据库。Hibernate 的主要优势在于其强大的查询语言HQL(Hibernate Query Language),以及自动化的对象持久化...
QueryPHP 是一个基于 PHP 的高性能、渐进式框架,它为开发者提供了构建高效 Web 应用的工具。这个框架的设计理念是轻量级、模块化和易于扩展,使其成为中小型项目以及大型企业级应用的理想选择。在解压后的 ...
Maven坐标:org.springframework:spring-orm:4.2.2.RELEASE; 标签:springframework、spring、orm、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...
SQLite3的ORM(Object-Relational Mapping)框架是一种在C++编程中将数据库关系模型与对象模型进行对应的技术。ORM框架使得开发者可以使用面向对象的方式来操作数据库,避免了直接编写SQL语句,提高了开发效率和代码...
在.NET环境中,ORM框架可以帮助开发者简化数据库操作,使得开发者可以使用面向对象的方式来处理数据,而无需直接编写SQL语句。轻量级ORM框架尤其适合小型项目或对性能要求不高的场景,因为它们通常具有更小的体积、...
### 主流ORM框架技术应用——Hibernat与MyBatis详解 #### 一、MVC设计模式概述 在深入探讨ORM框架之前,我们先来了解一下软件工程中的一个重要设计模式——MVC(Model-View-Controller),它对于理解后续ORM框架的...
这篇博客“php中的orm”很可能是探讨PHP中的一些主流ORM框架及其使用方法。 PHP的ORM框架如Doctrine、Laravel的Eloquent、Phalcon的Phalcon ORM等,它们的核心思想是将数据库表映射为类,表中的记录映射为类的实例...
NORM 是一个 PHP 简单的 ORM 框架,支持 MySQL 。 标签:PHPNORM
Moon.Orm是一个专门为.NET开发者设计的轻量级ORM(对象关系映射)框架,它具有强大的功能和良好的可扩展性,能够支持多种不同的数据库系统,包括但不限于MySQL、SQL Server、Oracle、SQLite等。ORM框架的主要目标是...
.NET ORM框架,全称为Object-Relational Mapping(对象关系映射)框架,是.NET开发者...在zc_orm框架这个压缩包中,可能包含了关于这些ORM框架的示例代码、教程或其他相关资源,可以帮助深入理解和学习.NET ORM的使用。
在C#编程环境中,ORM框架为开发者提供了极大的便利,简化了数据访问层的代码,提高了开发效率。 “简单高效的ORM框架”可能是针对初学者设计的一个ORM解决方案,它的主要目标是提供易用性和高效性。这样的框架通常...
2. **ORM框架的使用**:学习如何在项目中集成Grove ORM,创建和配置数据模型,以及如何通过对象操作数据库,如添加、更新、删除记录。 3. **查询构建与执行**:掌握Grove ORM的查询API,如何构建复杂的SQL查询并...
雄辩:Laravel 4 ORM Illuminate数据库Illuminate数据库组件是一个用于PHP的完整数据库工具包,提供了一个表达性的查询构建器,ActiveRecord样式的ORM和模式构建器。 目前,它支持MySQL,Postgres,SQL Server和...