用户
 找回密码
 入住 CI 中国社区
搜索
查看: 20762|回复: 23
收起左侧

[数据库] [讨论/分享] 关于ORM (Object Relational Mapper)

[复制链接]
发表于 2007-12-2 23:49:16 | 显示全部楼层 |阅读模式
半年多前我在CI论坛上发布了一个未完善的ORM库(帖子链接),支持PHP4/5,基于CI的Active Record,无须配置(但需要遵守特定的数据库格式),开源。

大约两个月前左右,我开始开发新的ORM库,仅支持PHP5,仅支持MySQL,同样无须配置,并且可以随意的开发数据库(ORM库会自动分析数据库)。过几天开始我会继续开发,等成熟后会开源。:)

我想听听大家对ORM的看法。

我先抛砖引玉了——

我个人认为,使用ORM的最大好处便是缩短程序开发的周期。这就好比使用CI一样——如果所有的代码都重新写,性能上肯定要比使用任何框架(包括CI)都来得快,但是使用CI能够大幅的减低程序开发周期。当然,同样的,用ORM也会降低程序的性能。

目前市面上已经有好多ORM的方案了,从RoR的Active Record到CakePHP到Doctrine之类的。我觉得他们最大的问题就是——所有的对象都要设定两次。一次在程序里,一次在数据库里。部分ORM(比如RoR的)有自动建立数据库的功能,但是,好多时候,我们做项目,都是从数据库开始设计起的。而设计数据库的最普遍的方案就是用UML。

所以,我一直认为,ORM应该是由数据库来决定程序里的对象,而不是反过来。

这里有对目前大部分ORM方案缺点的陈述(http://dave.org.uk/talks/lpm/2006/orm/)。

各位的看法呢?:)

评分

参与人数 1威望 +3 收起 理由
Hex + 3 原创内容

查看全部评分

发表于 2007-12-3 00:09:48 | 显示全部楼层
顶啊,支持开源精神
发表于 2007-12-3 09:42:27 | 显示全部楼层
太棒了!!!
我代表我个人全力支持!!!
发表于 2007-12-4 16:23:52 | 显示全部楼层
ORM是啥啊?
发表于 2007-12-4 17:39:03 | 显示全部楼层
ORM =Object Relational Mapper
对象关系映射
就是把数据库表映射成对象。

我这么解释没错吧?呵呵
发表于 2007-12-5 14:17:52 | 显示全部楼层
我认为在php里ORM还是要以简单轻便为原则,一个简单轻便的om就够了。能够帮忙我们完成一些简单的,用的最多的日常操做,就可以了。不要过于追求太多的功能。如果太复杂的表关系,还是手动的好。
一个复杂的ORM,只会使简单的开发变的更为复杂。
发表于 2007-12-6 09:45:10 | 显示全部楼层
还是要根据项目的不同,来选择。
发表于 2007-12-10 17:26:41 | 显示全部楼层
目前接触到的项目都不是很复杂,基本裸写代码就能解决,一直不明白ORM到底是什么?用他又有什么好处?
发表于 2007-12-10 17:28:11 | 显示全部楼层
面向对象的好处,剩下的等高人继续解释。。。
 楼主| 发表于 2007-12-11 05:13:06 | 显示全部楼层
ORM的好处在于将数据库中的数据对象化。从而大大的减轻程序员的负担——在程序里不需要再一次一次的做枯燥的查询。

这几天在看MySQL和PostgreSQL的资料。我想我有点倾向于用PostgreSQL了…… 但是MySQL的社区大,有商业化的支持,前途无可限量。等过几年Falcon引擎成熟后,应当相当的有优势。但就目前看来,MySQL的问题多多。光就ORM而言,MyISAM不支持foreign key就非常的头疼。另外MyISAM也不支持transaction。InnoDB虽然有支持这些功能,但没有index,非常不方便。PostgreSQL基本上都支持,速度方面,从最新的几个benchmark来看,与MySQL的差距越来越小。

另外,大型数据库的话,PostgreSQL比MySQL更稳定。

本版积分规则