2011-01-10 113 views

回答

2

我在Rails 2中使用了Active Record,在Merb和Rails 3中使用了DataMapper,現在我每天都使用DM/Rails 3。我已經閱讀了AR3,但只在一個小項目(內部應用程序)中使用它。

我發現我真正關心的唯一區別是DM的strategic eager loading。它很少做人們希望的事情,它做的事情,對與錯,它與FM有關。

有了明確的eager loading in AR,毫無疑問應該發生什麼:它說明它做了什麼以及(通常)如何做。

雖然「自動」預先加載聽起來不錯,我覺得這對我來說2負的成績:

  1. 沒有顯着數量的時間花在搜索查詢
  2. 代碼的過度來源與僞預先加載散落在這種情況下,關係被物化並丟棄,只是爲了引發他們和身份地圖,偶爾不會「粘住」,也不會自我記錄。

否則,我覺得AR和DM是不同點的相同的野獸。不像說,Sequel

+0

你使用續集?如果不是,爲什麼不呢? – gucki 2011-04-22 19:59:15

+1

@gucki我在一年前將它用於一個項目,但自此轉換爲DM。我真的不記得我們遇到的問題太過分了,我認爲*在堅持之前可能是處理關係的問題,但我不想發誓。我記得Sequel本身沒有錯,例如bug,問題是設計阻抗不匹配。如果我今天開始一個新項目,我肯定會重新審視續集,因爲這些天我很厭惡ORM謊言。 – 2011-04-22 23:03:01

11

我更喜歡DM到AR。我覺得DM實際上是一個ORM,而AR只是SQL的一個包裝。 DM使得在數據存儲之間切換非常容易。 DM的查詢語法更加均勻。SEL(戰略性的急切加載)也使得DM看起來更像是一個對象存儲而不是AR。此外,DM類預先定義了屬性,它使代碼更具可讀性。來到DM世界後,我從來沒有錯過遷徙。 (即使你真的希望可以擁有它們)。使用導軌3,我幾乎只使用DM。