对象关系映射器是圣杯吗?

时间:2010-02-24 08:08:06

标签: orm

它们看似复杂且不必要。我在工作或家庭中构建的应用程序从未使用任何ORM,其中许多甚至都不是面向对象的。当它们有用时,它是否可以依赖于大小。如何确定应用程序有用时应该有多大?

5 个答案:

答案 0 :(得分:1)

您不需要O / RM,但也不需要高级编程语言(如C#或C ++),您只需使用汇编编写应用程序即可。那是过去的美好时光; - )

答案 1 :(得分:1)

没有银弹。我相信你一定听过很多次。但它的确如此。由于Object-Relational Impedance mismatch,ORM非常有用 ORM允许您使用您的编程语言思考或编程数据库。

答案 2 :(得分:1)

ORM与运行直接SQL查询相比具有明显的优势:

  • 保存/更新/删除整个对象图
  • 检查陈旧状态的实体版本
  • 更好的代码维护和编译时检查(SQL查询是魔术字符串)
  • 可以从对象模型生成数据库模式

然而,它们确实有一些缺点:

  • 需要相当长的时间来设置
  • 映射必须保持最新
  • 即使它将表映射到对象,您仍然需要知道SQL
  • 比直接SQL慢(但只在进行批量操作时才明显)
总的来说,在我看来,学习和使用ORM的好处远大于它的缺点。

答案 3 :(得分:0)

Padmarag says一样,ORM不是银弹。

如果你有一个非常复杂的(面向对象的)域模型,最好使用Object database

答案 4 :(得分:0)

ORM-Mapper现在是与RDBMS通信的方式。但是在每个应用程序中都不需要RDBMS。有几种NoSQL-Solutions,可能更适合使用。

但是有些用例我不喜欢ORM:报告批处理:这里是关于性能的问题,也是查询复杂性的问题。在这种情况下,可能更适合使用存储过程。