我最近开始学习ORM,一个跳到我心中的问题:
PHP应用程序主要使用MySql和Sqlite,几乎所有PHP服务器都安装了,因此在PHP中使用ORM是否值得与数据库无关?
性能怎么样?
答案 0 :(得分:6)
数据库独立性不是使用ORM的主要原因。你想拥有的是数据库的一般抽象。这可能意味着:使用简单,开发速度更快,数据库独立性......在任何情况下,通常都值得使用ORM。如果您的应用程序耗尽了所有CPU功能,那么您可以使用一些普通的SQL来优化某些查询。我想这是一种罕见的情况。
答案 1 :(得分:4)
您可以选择使用ORM的原因有几个,我可以想到一些:
使用ORM的大多数原因与速度/易于开发有关。
在性能方面,我之前使用过php的教义,与仅提取行相比,水合作用产生了巨大的开销。
答案 2 :(得分:3)
对于数据库独立性(和性能),请使用PDO。它是内置的,它准备好的语句非常适合防止SQL注入漏洞。
如果你坚持使用O / RM,它甚至会带来一些OO风格......请参阅PDOStatement::fetch(以及其他一些fetchXxx方法)。
答案 3 :(得分:2)
包含许多连接表,视图和其他内容的复杂项目。可能还有更多的数据库。
在我看来,由于内部使用它的框架,ORM仍然存在。和表现?我不确定(因为我不再使用它了)但我相信性能也可能是一个问题。您必须为从数据库查询中抽象出来的事实支付至少一些价格吗?我认为ORM在纸面上是个好主意但是效果不好。
答案 4 :(得分:1)
如果您的服务器运行PostgreSql或SQL Server(另外两个非常常见的数据库引擎),该怎么办?
如果要连接到旧数据库,该怎么办?
另外,您是否曾经维护过直接连接数据库的大型项目?当我打开一个充满mysql_query
个电话的文件时,它让我颤抖。
表现方面......取决于有问题的ORM。我在.NET环境中对它们比较熟悉,当然在这种环境中,性能差异很大,但这通常是与功能的权衡。
使用ORM将增加代码与数据库之间的正交性 - 这将使开发和维护更容易。在数据库之间切换的能力是一个好处,但肯定不是唯一的原因。
答案 5 :(得分:1)
使用ORM减轻了编写与打开数据库连接,汇集连接,准备语句,执行语句,将执行语句的结果映射到更有意义的事务以及最后关闭连接相关的样板代码的冗余。 / p>
执行诸如实例化对象,设置其属性然后对对象调用保存操作等操作要简单得多。仅使用ORM就可以使用ORM手动编码与数据库交互所需的许多步骤。
此外,使用干净的ORM,可以交换数据库,只需对应用程序进行最小的更改。
希望有所帮助。