5

在我看來,唯一的區別是Active Record在數據容器類中有CRUD方法,而Repository模式對數據容器和CRUD方法使用單獨的類,但我確實是錯的。Active Record和Repository模式有什麼區別?

Active Record和Repository模式有什麼區別?我應該什麼時候使用哪種模式?

回答

5

基本上,你的假設是正確的。存儲庫和DAO模式在Active Record內化它們時將外部持久性考慮因素外化。我已經看到一些實現,其中活動記錄類被注入了一個存儲庫實例,這個實例在內部提供了持久性關注點。

反對使用Active Record模式的最大原因很簡單,您的域對象不應該在乎它們是如何(或者甚至是)持久化的。存儲庫模式通過外部化持久性問題並將其作爲外部服務提供,從而爲域對象提供持久性無知。

2

IMO,存儲庫模式有助於減少對數據庫進行查詢的次數,因爲它可以訓練您根據事務和命令批處理進行思考,而使用Active Record模式時,它很容易被調用。保存(),.fetch()等,魯莽放棄。數據庫一般來說可能是一個足夠大的瓶頸,不要讓不必要的查詢變得更糟。

相關問題