Java-PHP中有哪些O/R Mapping解决方案

Java-PHP中有哪些O/R Mapping解决方案

浮生未歇 发布于 2017-07-26 字数 76 浏览 1071 回复 4

在JAVA中我们使用Hibernate来解决O/R Mapping,请问在PHP中一般怎么处理。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

灵芸 2017-10-10 4 楼

Doctrine
Doctrine是一个PHP的ORM框架,它必须运行在>=php5.2.3版本上,它是一个功能强大的数据抽象层.它的一个主要特征就是使用面向对象的方式来实现数据库查询的封转,它底层通过一个类似 Hibernate HQL的DQL的查询语句进行数据库查询, 这使得开发的灵活性更强,大大减小了重复代码。相比Propel,Doctrine的优点在于它支持支持全文检索,Doctrine的文档一直就比Propel要全面丰富,社区更活跃,而且使用起来更加自然、更易阅读、更接近原生SQL。性能方面也略微优于Propel。同样你也可以可以很方便的把Doctrine集成到现有的应用框架中去,比如PHP框架symfony的1.3以后的版本将Doctrine作为默认的ORM框架,同时也可以将Doctrine和Codeigniter整合起来。
官方网站: http://www.doctrine-project.org/

EZPDO
EZPDO是一个十分轻量级的PHP ORM框架。EZPDO的作者的本意旨在降低复杂的ORM学习曲线,尽可能在ORM的运行效率和功能之间做一个平衡点,它是我至今用过的最简单的ORM框架,我目前还想将它集成到我的CoolPHP SDK中来,功能也基本能满足需求,只不过ESPDO的更新比较缓慢。
官方网站:http://www.ezpdo.net/blog/?p=2

RedBean
RedBean是一个易于使用,轻量级PHP ORM框架,提供对MySQL, SQLite&PostgreSQL的支持。RedBean架构非常灵活,核心也非常简约,开发者可以很方便的通过插件来扩展功能。
官方网站:http://www.redbeanphp.com/

其他
国内的fleaphp开发框架基于TableDataGateway实现ORM实现;Zend Framework除了提供对 SQL 语句的封装以外,也同样实现了TableGateway、TableRowSet、TableRow的实现;还有一些类似Rails的ActiveRecord实现的解决方案。

更多ORM框架请阅:http://www.oschina.net/project/tag/126/orm?sort=view&lang=22&os=0

总结:
总的来说,一般ORM框架对付简单的应用系统来说都能满足基本需求,可以大大降低开发难度,提高开发效率,但是它在SQL优化方面,肯定是比纯SQL语言要差很多,对复杂关联、SQL内嵌表达式的处理都不是很理想。也许这主要是由于PHP本身对象持久化的问题,导致ORM效率过低,普遍比纯SQL要慢10~50倍。但是这些都是有办法解决的,最基本的解决性能的方案,我们可以通过缓存来提高效率,Hibernate来说,虽然配置比较繁杂,但是它通过灵活的使用二级缓存和查询缓存极大的缓解数据库的查询压力,极大的提升了系统的性能。

灵芸 2017-09-18 3 楼

看下 QeePHP 的 active record 或者 fleaphp 的表网关

虐人心 2017-09-04 2 楼

刚sourceforge搜索了下,有很多:sourceforge ORM搜索
项目有:
pdoma
kobject-php
phplightorm
engineframework

瑾兮 2017-08-23 1 楼

php的ORM主要有下面几种:
1.Doctrine 是一个 PHP 的 ORM (对象关联映射框架),基于强大的 DBAL (数据库抽象层)。其中一个最主要的功能就是使用面向对象的方式执行数据库查询,受 Hibernate HQL 的影响,Doctrine 使用一种叫 DQL 的查询语句进行数据库查询。
2.RedBeanPHP是一个易于使用,轻量级PHP ORM框架。RedBean拥有一个灵活的架构,其核心非常简约,可以通过插件来扩展功能
3.Propel是一个适用于PHP5的OR映射(Object Relational Mapping)框架。它允许你使用对象代替SQL来读写数据库表格中的行。Propel提供一个生成器来为你的数据模型创建SQL定义文件和PHP类,与一个运行期引擎用来透明地获取和持久化对象。
4.NotORM 是一个 PHP 库,用来简化和数据库的交互。最有特色的功能是处理表关联关系非常简单。另外 NotORM 的性能非常的高,设置高过内置的驱动。
这4种为常用的,其中DOCTRINE功能最全用的最多,其中的symfony2.0框架就是用的这个,propel是比较早的ORM组件,symfony1.X采用的是propel,redbeanphp与NOTORM是最近才发布的ORM类,两者都是简单易用,上手快,以上4种ORM我均使用过,感觉用NOTORM REDBEANPHP比较得心应手!