2010-02-24 59 views
0

他們似乎複雜和不必要。我在工作或家中建立的應用程序從未使用過任何ORM,並且其中許多應用程序甚至沒有面向對象。當它們可以有用時,它的大小是否可以依賴?如何確定在應用程序有用時應該有多大?對象關係映射器是聖盃嗎?

+0

對此的任何答案都是主觀的,所以這真的應該被標記爲社區wiki問題。 – 2010-02-24 08:12:16

+0

已經有關於此主題的問題。請搜索。 – Padmarag 2010-02-24 08:16:55

+0

軟件開發目標是?不要認爲,這是非常主觀的。 – poo 2010-02-24 08:34:54

回答

1

沒有銀子彈。我相信你一定聽過很多次了。但其確實如此。由於Object-Relational Impedance mismatch,ORM很有用。
ORM允許您使用您的編程語言來思考或編程數據庫。

+0

是的,這是最好的部分。一切都只是普通的對象。沒有更多的SQL字符串.. – poo 2010-02-24 08:37:07

1

您不需要O/RM,但您也不需要像C#或C++這樣的高級編程語言,只需使用程序集編寫應用程序即可。那些曾經是美好的日子;-)

1

奧姆斯也有超跑直線上升的SQL查詢獨特的優勢:

  • 保存/更新/刪除整個對象圖
  • 版本的實體以檢查是否存在失效狀態
  • 更好的代碼維護和編譯時檢查(SQL查詢字符串魔法)
  • 可以生成從對象模型的數據庫模式

但是,他們確實有一些缺點:

  • 需要的時間相當大的量來設置
  • 映射必須保持最新
  • 即使它映射表的對象,你還需要知道SQL(做批量操作的時候,但只有明顯),比直線上升的SQL慢

總體來說,學習和使用ORM的優點遠大於缺點,在我看來。

0

Padmarag says一樣,ORM不是銀子彈。

如果你有一個非常複雜的(面向對象)領域模型,你可能會更好使用Object database

0

ORM-Mapper是時下與RDBMS溝通的方式。但是你並不需要在每個應用程序中使用RDBMS。有幾種NoSQL解決方案可能更適合使用。

但有些用例我不喜歡ORM:報告批處理:這是一個關於性能的問題,也是查詢複雜性的問題。在這種情況下,可能會使用更合適的存儲過程。