PHP ORM框架Propel VS Doctrine

原创 2010年02月01日 11:22:00

认识ORM其实最早源自一场争论,各个框架都声称具备良好的ORM实现,但是使 用后发现,如果仅仅是强制返回数据对象还声称自己是ORM的话,那就贻笑大方了。那只能说是伪ORM或是ORA(array)而已。很显然返回的对象除了 属性值外,还应该包括可执行方法,实现对数据的操作运用。

后来工作改用symfony 框架,该框架内置了对ORM框架PropelDoctrine 的 支持,symfony 1.2.*以前是采用propel作为默认ORM框架,symfony 1.3以后官方将默认ORM框架改为Doctrine。当然实际运用你可以自由切换,你也可以不用symfony直接在开发中采用Propel或 Doctrine。一番PK,最终在项目中采用了Doctrine作为默认ORM框架。

以下将对Propel和Doctrine的异同做一个简单对比,欢迎拍砖……

基本特性:
1)两者只需简单设置即可应用,支持常用CRUD操作;
2)两者均支持自动生成model,每个表生成两个model文件,也支持从原有数据库生成model;有些数据库数据类型转过来的属性类型可能不是完全一样,是一个最接近的类型;
3)支持数据有效验证和定义model关系;
4)支持单表继承,支持字段自动赋值;
5)支持主从复制;
6)Doctrine支持全文搜索

文档:
Doctrine的文档一直就比Propel要全面丰富,社区更活跃

使用方法:
Propel和Doctrine基本CRUD操作很类似,但是涉及条件操作时区别就比较大了
1)propel查询:
$criteria = new Criteria( ) ;
$criteria ->add ( JobeetJobPeer::CREATED_AT , time ( ) - 86400 * 30 , Criteria::GREATER_THAN ) ;
$this ->jobeet_job_list = JobeetJobPeer::doSelect ( $criteria ) ;

2)doctrine查询:
$result = Doctrine_Query::create()->from("User")->where("name = 'caleng'")->excute();

明显可以看出Doctrine的连贯写法更加自然、更易阅读、更接近原生SQL。

性能:
Doctrine > Propel

关键字:orm、symfonydoctrinepropel

Doctrine学习笔记(实体) —— 2

symfony2使用doctrine新建实体并自动更新数据库
  • xu5733127
  • xu5733127
  • 2016-03-31 13:41:45
  • 702

ORM doctrine的使用

一、首先先写一个composer.json文件,内容如下: { "require": { "doctrine/dbal": "2.5.1" } "repositori...
  • u014359108
  • u014359108
  • 2015-10-09 11:21:11
  • 1600

数据库和Doctrine

对于任何应用程序来说最为普遍最具挑战性的任务,就是从数据库中读取和持久化数据信息。尽管symfony完整的框架没有默认集成ORM,但是symfony标准版,集成了很多程序,还自带集成了Doctrine...
  • zxjiayou1314
  • zxjiayou1314
  • 2016-06-25 15:34:15
  • 1029

Doctrine 2 ORM 事务处理

“事务划界”就是定义你的事务边界的。正确地进行事务划界非常重要,如果做的不好就会影响你的应用性能。许多数据库以及数据库抽象层(比如PDO)默认工作在自动提交(auto-commit)模式下,该模式下每...
  • darluc
  • darluc
  • 2015-10-11 13:42:13
  • 1021

PHP ORM框架Propel VS Doctrine

认识ORM其实最早源自一场争论,各个框架都声称具备良好的ORM实现,但是使用后发现,如果仅仅是强制返回数据对象还声称自己是ORM的话,那就贻笑大方了。那只能说是伪ORM或是ORA(array)而已。很...
  • caleng
  • caleng
  • 2010-02-01 11:22:00
  • 7578

推荐!国外程序员整理的 PHP 资源大全

依赖管理 依赖和包管理库 Composer/Packagist:一个包和依赖管理器Composer Installers:一个多框架Composer库安装器Pickle:一个P...
  • happyduoduo1
  • happyduoduo1
  • 2016-06-28 14:23:11
  • 5353

Doctrine-对象关系映射(ORM)中文版

Doctrine是一个基于PHP的对象关系映射(ORM),它构建在强大的数据库抽象层(DBAL)之上,透明地为PHP对象提供持久化。 你可以从官方文档中读到更多关于Doctrine ORM 的内...
  • HarretLee
  • HarretLee
  • 2015-02-22 23:36:56
  • 2416

Doctrine学习笔记(实体OneToOne) —— 3

symfony2 doctrine onetoonet entity,
  • xu5733127
  • xu5733127
  • 2016-03-31 14:11:23
  • 655

Github上的PHP资源汇总大全

依赖管理 ——用于依赖管理的包和框架 Composer/Packagist : 一个包和依赖管理器 Composer Installers:  一个多框架Composer库安装器 ...
  • sanxian_li
  • sanxian_li
  • 2015-01-10 01:49:28
  • 937

Github上的PHP资源汇总

目录[-] 依赖管理 依赖管理的附加部分 框架 框架的附加部分 框架组件 微型框架 微型框架的附加部分 模板 静态站点生成器 HTTP URL Email 文件 流 依赖注入 图像 测试 持续集成...
  • helencoder
  • helencoder
  • 2016-04-15 14:35:43
  • 823
收藏助手
不良信息举报
您举报文章:PHP ORM框架Propel VS Doctrine
举报原因:
原因补充:

(最多只允许输入30个字)